zoukankan      html  css  js  c++  java
  • $P5269 欧稳欧再次学车$

    (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 ;
    }
    
    不存在十全十美的文章 如同不存在彻头彻尾的绝望
  • 相关阅读:
    Lua 语言学习
    Unity EasyTouch官方案例学习
    Unity Dotween官方案例学习
    斗地主出牌规则
    C# XML文件读取
    斗地主项目总结
    C# 委托和事件
    C# 观察者模式
    消防法及相关法律法规(二)
    消防法及相关法律法规(一)
  • 原文地址:https://www.cnblogs.com/qf-breeze/p/10587300.html
Copyright © 2011-2022 走看看