CF949A LFYZOJ#111 Zebras
生活随笔
收集整理的這篇文章主要介紹了
CF949A LFYZOJ#111 Zebras
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
由于每個子串以0開頭,以0結(jié)束.
容易得到:0的個數(shù)必須比1多.
我們設(shè)置一個統(tǒng)計數(shù)量的變量cnt.
由于不知道子串個數(shù),防止炸空間,用二維的動態(tài)數(shù)組vector.
先輸入 然后掃一遍,遇到0 cnt++,并且把0的位置壓進(jìn)數(shù)組.遇到1 cnt--,并把1的位置壓進(jìn)數(shù)組.因為遇到0后再遇到1 cnt的值不會變,所以此時的子串0和1的位置就放到了數(shù)組的cnt這同一行上.如果cnt比0小直接輸出-1.
上代碼
#include<bits/stdc++.h> using namespace std; char s[200005]; int l,cnt,k; vector<int>q[200005]; int main(){scanf("%s",s);l=strlen(s);for(int i=0;i<l;i++){if(s[i]=='0')q[cnt++].push_back(i+1);else{if(cnt==0){printf("-1");return 0;}q[--cnt].push_back(i+1);}k=max(k,cnt);}if(cnt!=k){printf("-1");return 0;}printf("%d\n",cnt);for(int i=0;i<cnt;i++){printf("%d",q[i].size());for(int j=0;j<q[i].size();j++)printf(" %d",q[i][j]);printf("\n");}return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/pushinl/p/8942498.html
總結(jié)
以上是生活随笔為你收集整理的CF949A LFYZOJ#111 Zebras的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: gunicorn之日志详细配置
- 下一篇: 明末狠毒的张豪格军队是怎么杀他的?