宁波网站建设网络推广/新闻摘抄2022最新20篇
http://www.pipioj.online/problem.php?id=1463
思路:把字符串丢到setsetset里面即可,但是直接丢太暴力了。空间复杂度和时间复杂度都很高,我们可以把长度为nnn的仅包含ccc的字符串抽象为一对数据:(c,n)(c,n)(c,n),把这一对数据插入到setsetset中维护即可。
#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;const int maxn=1e5+5;char s[maxn];struct node
{char c;int cnt;node(char c,int cnt):c(c),cnt(cnt){}bool operator <(const node &a)const{if(c==a.c)return cnt<a.cnt;return c<a.c;}
};void pr(const node &a)
{int cnt=a.cnt;while(cnt)putchar(a.c),--cnt;putchar('\n');
}int main()
{while(~scanf("%s",s)){int n=strlen(s),ed;set<node> st;for(int i=0;i<n;){ed=i+1;while(ed<n&&s[ed]==s[i])ed++;st.insert(node(s[i],ed-i));i=ed;}printf("%d\n",(int)st.size());for(const node& a:st)pr(a);}return 0;
}