题目链接:这里
题意:就是给处一个长度不超过10^5的十进制正整数, 是按照题目所给的方法从一个数组中拼出来的,为初始的那个数组最多有多少个元素。
解法:从末尾向开头贪心加更大字符串的字符串即可。
//CF 387C
#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
char s[maxn], tmp[maxn];
int cnt, i;
bool check(){
if(i > cnt) return true;
if(i < cnt) return false;
for(int i = 0; i < cnt; i++){
if(s[i] < tmp[cnt-1-i]) return false;
}
return true;
}
int main()
{
scanf("%s", s);
int len = strlen(s), ans = 1;
cnt = 0;
for(i = len - 1; i >= 0; i--){
if(s[i] == '0') tmp[cnt++] = s[i];
else{
tmp[cnt++] = s[i];
if(check()){
ans++;
cnt = 0;
}
}
}
printf("%d\n", ans);
return 0;
}