zoukankan      html  css  js  c++  java
  • Codeforces 1238C. Standard Free2play

    传送门

    题目别看错了,好像挺多人都读错了...

    然后显然可以贪心,只有在需要用 $ ext{magic crystals}$ 的时候才用

    那么直接模拟即可

    如果初始相邻两个突出的平台高度不连续那么我们显然可以直接从上面一步步操作到达下面的平台的上面一个位置

    此时考虑如果我们直接操作,那么下面那个平台(设为 $x$)就会缩起来,然后就会掉到更下面的平台(设为 $y$)

    如果当前和更下面的平台 $y$ 高度超过 $2$ 了,那么为了不摔死只能用一次 $ ext{magic crystals}$

    并且用在 $x$ 位置和用在 $x$ 下面一个位置(不是平台)都是一样的,那么直接用在 $x$ 位置就好了

    如果和 $y$ 高度不超过 $2$ ,那么我们显然直接操作然后落到 $y$ 即可

    这样一定是最优的,直接按着思路模拟,注意细节

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    using namespace std;
    typedef long long ll;
    inline int read()
    {
        int x=0,f=1; char ch=getchar();
        while(ch<'0'||ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
        while(ch>='0'&&ch<='9') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }
        return x*f;
    }
    const int N=2e5+7;
    int Q,n,m,a[N];
    int main()
    {
        Q=read();
        while(Q--)
        {
            n=read(),m=read();
            for(int i=1;i<=m;i++) a[i]=read();
            int ans=0;
            for(int i=2;i<=m;i++)
            {
                if(n<=a[i]) continue;
                if(n!=a[i]+1) n=a[i]+1;
                if(i<m)
                {
                    if(a[i+1]==a[i]-1) n=a[i+1];
                    else ans++,n=a[i];
                    continue;
                }
                if(n>2) ans++;
                break;
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    第八周学习总结
    《程序是怎样跑起来的》第十一章
    第七周学习总结
    《程序是怎样跑起来的》第十章
    《程序是怎样跑起的》第九章
    第五周学习总结
    《程序是怎样跑起来的》第八章
    《程序是怎样跑起来的》第七章
    抽象类与接口学习总结
    多态学习总结
  • 原文地址:https://www.cnblogs.com/LLTYYC/p/11642446.html
Copyright © 2011-2022 走看看