题目链接:这里 题意:就是给处一个长度不超过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; }