码迷,mamicode.com
首页 > 其他好文 > 详细

$P5269 欧稳欧再次学车$

时间:2019-03-24 11:11:22      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:多少   tps   class   problem   main   停止   表示   ++   bit   

\(problem\)

哇 看各位巨佬都来发\(T1\)的题解 我也来发一篇。(别的题目不会别瞎bb

题目大意就是

\(T\) 秒 能走多少路程

第一行六个整数 \(T,N,L,R,X,K\)

接下来 \(T\) 行,每行两个整数 \(x,y\) 表示这一秒的操作。

我们设档为\(D\),转速为\(V\)

首先 \(D = 1\)\(V = L\)

\(x == 1\) \(D++\)\(V=L\)

\(x == 2\) \(D--\)\(V=R\)

\(y == 0\) \(V+=X\)

\(V > R\)\(V=R\)(即\(V=min(V+X,R)\)

连续\(K\)\(V=R\) 则停止。

得出

if(V == R) cnt ++ ;
if(V != R) cnt = 0 ;
if(cnt == K) break ;

特别注意的一点 是 特判\(-1\)

if(D == N+1 or D == 0) return printf("-1"),0;

完整代码如下。

//完整代码
#include <bits/stdc++.h>
using namespace std;
typedef long long LL ;
inline LL In() { LL res(0),f(1); register char c ;
    while(isspace(c=getchar())) ; c == '-'? f = -1 , c = getchar() : 0 ;
    while(res = (res << 1) + (res << 3) + (c & 15) , isdigit(c=getchar())) ;
    return res * f ;
}

LL T , N , L , R , X , K ;
LL D , V ;
signed main () {
    T = In() ; N = In() ; L = In() ; R = In() ; X = In() ; K = In() ;
    D = 1 , V = L ;
    LL ans = 0 ;
    LL cnt = 0 ;
    for(register int i = 1 ; i <= T ; i++) {
        int x , y ;
        x = In() , y = In() ;
        if(x == 0) D ++ , V = L ;
        if(x == 1) D -- , V = R ;
        if(D == N+1 or D == 0) return printf("-1"),0;
        if(y) V = V+X>R?R:V+X;
        if(V == R) cnt ++ ;
        if(V != R) cnt = 0 ;
        ans += D * V ;
        if(cnt == K) break ;
    }
    cout << ans ;
    return 0 ;
}

$P5269 欧稳欧再次学车$

标签:多少   tps   class   problem   main   停止   表示   ++   bit   

原文地址:https://www.cnblogs.com/qf-breeze/p/10587300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!