题目链接:http://codeforces.com/contest/950

flag:思维题+模拟

例子:00110110111000

①前面的两个0形成了:

序列1:{0}

序列2:{0}

均是合法的序列;

②第3个字符‘1’,是不可能单独成一个序列的首元素,不符要求;必须放进现合法序列中,放进序列1中:

序列1:{0,1}

序列2:{0}

③第4个字符‘1’,同三一样,必须放进合法序列中,于是放进序列2中:

序列1:{0,1}

序列2:{0,1}

④第5个字符‘0’,可以开一个合法序列,但是将一个不合法序列变为合法序列的价值好些!放进序列2中:

序列1:{0,1}

序列2:{0,1,0}

⑤第6个字符‘1’,同理②,放入序列2中,2个序列又成了不合法的!

序列1:{0,1}

序列2:{0,1,0,1}

⑥第7个字符‘1’,同理②,但此时已经没有合法序列了,所以无法拆成!


* i记录前i个Vector是以1结尾的串(不合法序列);j记录当前开的Vector的个数;

  后面来一个‘1’,这个必须放在‘0’的后面,所以放在后面i+1~j个Vector其中一个,不妨放在第i+1个Vector中,

使得不合法序列多了一个!如果这时候i==j,就表示此时已经没有‘0’可以接了,所以失败!无法分解!成功即++i!

后面来一个 ‘0’,最佳放法是 将第i个Vector变为合法的方法,即i>0时,放入第i个Vector中,--i; 如果i==0,表

示现在前j个Vector全是合法的序列,我们于是开第j+1个Vector合法序列,++j!


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <queue>
#include <vector>
#include <math.h>
#define Maxn 201000
using namespace std;char s[Maxn];vector<int> Q[Maxn];
int main(){scanf("%s",s);int str=strlen(s);int i=0,j=0;int flag=1;for(int k=0;k<str;++k){if(s[k]=='1'){++i;if(i>j){flag=0;break;}Q[i].push_back(k+1);}else{if(i>0){--i;Q[i+1].push_back(k+1);}else {Q[++j].push_back(k+1);}}}if(i>0){flag=0;}if(flag==0)printf("-1\n");else {printf("%d\n",j);for(int k=1;k<=j;++k){printf("%d",Q[k].size());for(int v=0;v<Q[k].size();++v){printf(" %d",Q[k][v]);}printf("\n");}}return 0;
}

Codeforces Round #469 (Div. 2) C、 Zebras相关推荐

  1. Codeforces Round #742 (Div. 2) B、C 题解

    Codeforces Round 742 B. MEXor Mixup 题意 有一个数组,输入两个数a,b,a代表这个数组之外的最小非负整数,b代表这个数组的异或值,问你该数组的最小长度. 思路 首先 ...

  2. Codeforces Round #469 (Div. 2)

    开学啦! A. Left-handers, Right-handers and Ambidexters time limit per test 1 second memory limit per te ...

  3. Codeforces Round #469 (Div. 2) A/B

    A题 http://codeforces.com/contest/950/problem/A 题意:给定三个数l,r,a,要我们求min(l+a1,r+a2)的最大值再乘以2:a1+a2<=a. ...

  4. Codeforces Round #552 (Div. 3)D、E题解

    D. Walking Robot 题意 机器人在一维坐标轴上从0走到x,中途可以在有光的地方可以选择给太阳能电池充电,每次移动都要消耗一单位电,蓄电池容量为a,太阳能电池容量为b,一开始都是满电,问机 ...

  5. Codeforces Round #277(Div 2) A、B、C、D、E题解

    转载请注明出处: http://www.cnblogs.com/fraud/           --by fraud A. Calculating Function 水题,判个奇偶即可 1 #inc ...

  6. Codeforces Round #618 (Div. 2)C、Anu Has a Function

    C. Anu Has a Function time limit per test1 second memory limit per test256 megabytes inputstandard i ...

  7. Codeforces Round #807 (Div. 2) A-C题解

    Codeforces Round #807 (Div. 2) A.B.C题题解 A - Mark the Photographer 题意:马克要给2n个人照相,分两排,一排站n人,给出每个人的身高,要 ...

  8. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  9. Codeforces Round #434 (Div. 2)【A、B、C、D】

    Codeforces Round #434 (Div. 2) codeforces 858A. k-rounding[水] 题意:已知n和k,求n的最小倍数x,要求x后缀至少有k个0. 题解:答案就是 ...

  10. Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...

最新文章

  1. 置顶 | 2019学习单/读书单(dream a little dream)
  2. UA MATH563 概率论的数学基础 中心极限定理24 随机变量的特征函数
  3. Linux:网络编程
  4. 保护企业网络安全,不要忽视数据
  5. java多表查询返回数据_spring data jpa如何在多张数据库表中查询返回某些字段值?...
  6. 太阳系其实是被造出来的!来,用视觉聆听宇宙之音!
  7. MFC画图(画线、画矩形、画刷画笔的使用)
  8. Cover团队在Kovan以太坊测试网部署xCOVER智能合约
  9. NHibernate 操作视图 第十三篇
  10. volist 自增序号 分页如何实现?
  11. ffmpeg time_base详解
  12. Alter table alter |change |modify 区别
  13. 公务员备考(七)行测 资料分析(20题28分钟,正确率80%)
  14. aop:aspectj-autoproxy的作用
  15. FZU 2219 StarCraft (哈夫曼树)
  16. DAY-20 GAN模式崩溃的理论解释
  17. 分组交换比起电路交换快速的原因
  18. RV1126 Linux 以太网MAC PHY 芯片8201f gmac dts配置
  19. NekoHTML 和 XPath
  20. Unity License 出错

热门文章

  1. Zend Guard加密PHP项目图文分解教程,加密兼容PHP7.x
  2. xxl子任务_分布式任务调度平台XXL-JOB
  3. 突破限制轻松下载网盘的文件,免登陆使用,速度也不错!
  4. 日照分析的计算机精度,日照分析的部分参数详解
  5. vlan互通三种方式之二第二篇
  6. 老男孩教育python全栈第九期视频
  7. android发短信!渣本毕业两年经验,终局之战
  8. 安卓掌读小说v1.5.8破解版免费分享
  9. 科技爱好者周刊(第 163 期):你的城市有多少张病床?
  10. 三种数据流分析的方程、用途