• 思维——cf1238C


    听思维的一道题,网上大多直接模拟,感觉有点麻烦,其实只要把连续段求出来,然后处理一下统计答案就行

    两个注意点:1.除了第一个连续段,其余段长度都要+1

          2.因为目的地是0,所以最后一段要特判一下

    #include<bits/stdc++.h>
    using namespace std;
    #define N 200005
    int n,p[N],h;
    vector<int>v;
    
    int main(){
        int q;cin>>q;
        while(q--){
            v.clear();
            cin>>h>>n;
            int len=0;
            for(int i=1;i<=n;i++){
                cin>>p[i];
                if(i==1 || p[i]+1==p[i-1])
                    len++;
                else {
                    if(v.size()!=0)len++;
                    v.push_back(len);
                    len=1;
                }
            }
            
            int ans=0;
            if(p[n]>=2){
                if(v.size())len++;
                if(len%2==0)ans++;
            } 
            
            
            for(auto len:v){
                if(len%2==0)ans++;
            }
            
            cout<<ans<<'
    ';
        }
    } 
  • 相关阅读:
    Codeforces 960B(优先队列)
    “景驰科技杯”2018年华南理工大学程序设计竞赛 H-对称与反对称(逆元)
    AcWing
    POJ
    POJ
    AtCoder
    HRBUST
    CodeForces
    HYSBZ
    HDU
  • 原文地址:https://www.cnblogs.com/zsben991126/p/11703111.html
Copyright © 2020-2023  润新知