题意  定义一个序列为0开头,0结尾 中间有若干个101010交替的序列为合法. 例如0,010,01010.为合法.

给出01字符串s,将s分成若个个子序列 使得其每个子序列都为合法,并输出任意一种方案或判断无解. |s|<=-1.

//数据:000111000

分别将'0','1'的位置压入集合a,b.

因为0可以单独一个,所以只要把'1'配完即可有解.

每次从'0'开始暴力生成一个子序列,越长越好,边匹配边在set中删除这些数的位置.

若出现0不够 即为无解,后面'1'不够 则重新开始生成序列即可.

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2e5+5,mod=1e9+7;
char s[N];
int mk[N];
set<int> a,b;
vector<int> v[N];
int main()
{   scanf("%s",s+1);int n=strlen(s+1);for(int i=1;i<=n;i++){if(s[i]=='1')   a.insert(i);else    b.insert(i);}int one=a.size(),num=0;bool flag=true;while(one){int st=0,ls=0;while(true){if(st%2){auto p=a.lower_bound(ls);if(p!=a.end()){int x=(*p);a.erase(p),ls=x,one--,v[num].push_back(x);}elsebreak;}else{auto p=b.lower_bound(ls);if(p!=b.end()){int x=(*p);b.erase(p),ls=(x),v[num].push_back(x),mk[x]=true;}else{flag=false;break;}}st++;}if(flag==false)break;num++;}if(flag==false)puts("-1");else{for(int i=1;i<=n;i++)if(!mk[i]&&s[i]!='1')v[num].push_back(i),num++;printf("%d\n",num);for(int i=0;i<num;i++){printf("%d ",v[i].size());for(int j=0;j<v[i].size();j++)printf("%d ",v[i][j]);printf("\n");}}return 0;}

CF 950C.Zebras 模拟,set相关推荐

  1. Codeforces 题目合集+分类+代码 【Updating...】【361 in total】

    961A - Tetris                                                模拟                                      ...

  2. 2023届【校招】安全面试题和岗位总结(字节、百度、腾讯、美团等大厂)

    写在前面 个人强烈感觉面试因人而异,对于简历上有具体项目经历的同学,个人感觉面试官会着重让你介绍自己的项目,包括但不限于介绍一次真实攻防/渗透/挖洞/CTF/代码审计的经历 => 因此对于自己的 ...

  3. [转贴]改好DEBUG七处缺点的comexe实现报告

    改好DEBUG七处缺点的comexe实现报告 首先声明,本文所指DEBUG,系DOS 6.22,win 98及2k三者DEBUG.EXE. (1) DEBUG命令T及P的2处缺点 跟踪命令T,建立在8 ...

  4. 改好DEBUG七处缺点的comexe实现报告

    首先声明,本文所指DEBUG,系DOS 6.22,win 98及2k三者DEBUG.EXE. (1) DEBUG命令T及P的2处缺点 跟踪命令T,建立在8086标志寄存器第8位(自陷位)置1后,处理器 ...

  5. 那些停课的日子 by yjjr

    border="0" src="//music.163.com/outchain/player?type=2&id=526472621&auto=1&am ...

  6. 整理Windows Phone 7教程(很全面)

    前言 离Windows Phone 7正式发布已过去几个月了,但国内关于Windows Phone 7的中文书籍资料太少了,大多数是英文资料,一本真正的中文开发教程书都没有, 要啃英文资料对大部分的开 ...

  7. Windows Phone 中文文章教程目录

    目录1(排名不分先后) 1 <Windows Phone 7 开发 31 日谈> 金山崟霸,张崟 (博客) 2 <Windows Phone 7 开发探索笔记> 金山崟霸,张崟 ...

  8. 用C实现模拟cf(穿越火线)抽奖

    琢磨了一段时间后,突发奇想用dev做了一个项目,模拟了cf游戏中的抽奖,目前只做了"幻神夺宝"部分,其他的抽奖懒得敲了,代码差不多,只需修改部分就行 如果运行代码选择了其他的抽奖选 ...

  9. CF 990A. Commentary Boxes【数学/模拟】

    [链接]:CF [题意]:对于一个数n,每次加一的代价是a,每次减一的代价是b,求被m整除时的最小代价. [分析]:分情况讨论,自己多举几个栗子. [代码]: #include<cstdio&g ...

  10. 计算机组成原理CF和ZF,2017年广东工业大学计算机学院832计算机组成原理考研仿真模拟题...

    一.选择题 1. 在定点数运算中产生溢出的原因是( ). A. 运算过程中最高位产生了进位或借位 B. 参加运算的操作数超出了机器的表示范围 C. 运算的结果的操作数超出了机器的表示范围 D. 寄存器 ...

最新文章

  1. WindowsServer和普通WIN操作系统有什么不同?
  2. Javascript中的日期函数[zz]
  3. Microsoft公司的匈牙利法命名规则
  4. c和python的区别动图_Python和C区别该如何理解?如何适应这种区别?
  5. 整数不少于12可以表示为两个复合数字的和
  6. MOSS搜索的爬网错误【访问被拒绝。请验证默认内容访问账户是否有权访问此库】...
  7. 【瑕疵检测】基于matlab GUI OTSU织物疵点检测【含Matlab源码 860期】
  8. SQL数据分析之数据提取、数据查询、数据清洗【MySQL速查】
  9. java web服务器cpu占用过高的处理 (2014-07-21 17:17:36)
  10. 19数字媒体技术1班 刘增千 PS笔记4
  11. pdf转word,这个库好用
  12. 三星typec转接耳机没反应_1MORE最新双旗舰无线降噪耳机评测:国货强于外夷的希望...
  13. Android开发 个人开发者几大后端云比较
  14. java mc和java jdk_JDK、JRE、JVM三者间的关系
  15. 2018-ECCV-Beyond Part Models:Person Retrieval with Refined Part Pooling论文笔记
  16. 陆奇-奇绩创坛-chatGPT新范式,新时代,新机会
  17. python怎么用散点图_Python利用matplotlib绘制散点图的新手教程
  18. springboot slf4j log4j2 动态创建日志的方法
  19. 安超云与PingCAP完成兼容互认证 携手打造协同生态
  20. 爱康科技子爱康科技山西孝义30MW光伏发电项目并网发电

热门文章

  1. 【图片resize】图片三种缩放方式/letterbox_image实现
  2. 新安装的MySQL,在installer界面start Server无法连接成功
  3. 企业债和公司债的区别(表)
  4. SAP BW4基础入门篇
  5. 【算法】【回溯】力扣-面试题08.07.无重复字符串的排列组合详解【超详细的算法解释和注释】
  6. SQL数据库无法附加
  7. (翻译)简化模式(Reduce)
  8. 厦门理工学院OJ题解(1223:Rite与跳舞毯)
  9. 马尔可夫毯/马尔科夫链/因果图/贝叶斯网络
  10. ROS(indigo) 安装和使用更新版本的Gazebo----3,4,5,6,7 附:中国机器人大赛中型组仿真比赛说明