CF1195C题解

思路

逐位判断每个奇数位是否要删除。每个数字删除后,对应的下标会发生改变,所以要通过取模一个变量 \(m\),\(m\) 的值在 0 和 1 之间变换。最后通过判断每个数字是否被删除来输出。

代码

#include<bits/stdc++.h>
using namespace std;
string s;
bool f[200010];
int n,ans,m;
int main(){
    cin>>n>>s;
    for(int i=0;i<n;i++)
        if(i%2==m){
            if(i<n-1&&s[i]==s[i+1]) ans++,m=m^1,f[i]=1;
            if(i==n-1) ans++,f[i]=1;
        }
    cout<<ans<<endl;
    for(int i=0;i<n;i++)
        if(!f[i]) cout<<s[i];
}
上一篇:CodeForces 600B Queries about less or equal elements


下一篇:【HDU5840】This world need more Zhu