Codeforces Round #469 (Div. 2) C、 Zebras
题目链接: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相关推荐
- Codeforces Round #742 (Div. 2) B、C 题解
Codeforces Round 742 B. MEXor Mixup 题意 有一个数组,输入两个数a,b,a代表这个数组之外的最小非负整数,b代表这个数组的异或值,问你该数组的最小长度. 思路 首先 ...
- Codeforces Round #469 (Div. 2)
开学啦! A. Left-handers, Right-handers and Ambidexters time limit per test 1 second memory limit per te ...
- 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. ...
- Codeforces Round #552 (Div. 3)D、E题解
D. Walking Robot 题意 机器人在一维坐标轴上从0走到x,中途可以在有光的地方可以选择给太阳能电池充电,每次移动都要消耗一单位电,蓄电池容量为a,太阳能电池容量为b,一开始都是满电,问机 ...
- Codeforces Round #277(Div 2) A、B、C、D、E题解
转载请注明出处: http://www.cnblogs.com/fraud/ --by fraud A. Calculating Function 水题,判个奇偶即可 1 #inc ...
- 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 ...
- Codeforces Round #807 (Div. 2) A-C题解
Codeforces Round #807 (Div. 2) A.B.C题题解 A - Mark the Photographer 题意:马克要给2n个人照相,分两排,一排站n人,给出每个人的身高,要 ...
- Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...
- 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. 题解:答案就是 ...
- Codeforces Round #699 (Div. 2) F - AB Tree(贪心、树上DP)超级清晰,良心题解,看不懂来打我 ~
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) F - AB Tree Problem ...
最新文章
- 置顶 | 2019学习单/读书单(dream a little dream)
- UA MATH563 概率论的数学基础 中心极限定理24 随机变量的特征函数
- Linux:网络编程
- 保护企业网络安全,不要忽视数据
- java多表查询返回数据_spring data jpa如何在多张数据库表中查询返回某些字段值?...
- 太阳系其实是被造出来的!来,用视觉聆听宇宙之音!
- MFC画图(画线、画矩形、画刷画笔的使用)
- Cover团队在Kovan以太坊测试网部署xCOVER智能合约
- NHibernate 操作视图 第十三篇
- volist 自增序号 分页如何实现?
- ffmpeg time_base详解
- Alter table alter |change |modify 区别
- 公务员备考(七)行测 资料分析(20题28分钟,正确率80%)
- aop:aspectj-autoproxy的作用
- FZU 2219 StarCraft (哈夫曼树)
- DAY-20 GAN模式崩溃的理论解释
- 分组交换比起电路交换快速的原因
- RV1126 Linux 以太网MAC PHY 芯片8201f gmac dts配置
- NekoHTML 和 XPath
- Unity License 出错