题意:只有长度为偶数 且每个奇数位和后面的偶数维不一样的字符串为goodstring
给出一个字符串 输出最少删除几个字符 形成good串
这题wa了好几次
一开始没考虑删除一个后面会前移的!
他没说字典序之间减最后一个就好了。。。
可以采用一组一组加入 这样就保证为偶数个了

#include<bits/stdc++.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define repp(i,a,b) for(int i=(a);i>=(b);--i) #define RI(n) scanf("%d",&(n)) #define RII(n,m) scanf("%d%d",&n,&m) #define RIII(n,m,k) scanf("%d%d%d",&n,&m,&k) #define RS(s) scanf("%s",s); #define ll long long #define pb push_back #define REP(i,N) for(int i=0;i<(N);i++) #define CLR(A,v) memset(A,v,sizeof A) ////////////////////////////////// #define inf 0x3f3f3f3f const int N=2e6+5; int a[N]; vector<char>ch; int main() { int n;RI(n); string s; cin>>s; int i=0; while(i<s.size()) { int j=i+1; while(s[i]==s[j]&&j<=s.size()) j++; if(j==s.size())break; ch.pb(s[i]); ch.pb(s[j]); i=j+1; } cout<<n-ch.size()<<endl; if(ch.size()) rep(i,0,ch.size()-1) cout<<ch[i]; return 0; }