每三个一起考虑
不论如何 我们都可以进行最多一次操作使得答案加2 就好了

#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;const int N=1000005;
char s[N]; int n;const int op[]={1,2,0,1,0,0,0,2,2,0,0,0,1,0,2,1
};
int ans[N];int main(){freopen("t.in","r",stdin);freopen("t.out","w",stdout);scanf("%s",s+1); n=strlen(s+1)/3; for (int i=1;i<=3*n;i++) s[i]-='0';for (int i=0;i<n;i++){int t=(s[3*i]<<3)+(s[3*i+1]<<2)+(s[3*i+2]<<1)+(s[3*i+3]<<0);if (op[t]){ans[++*ans]=3*i+op[t];s[3*i+op[t]]^=1,s[3*i+op[t]+1]^=1;}}printf("%d\n",*ans);for (int i=1;i<=*ans;i++)printf("%d ",ans[i]);return 0;
}

[构造] Codeforces Gym 101173 CERC 16 K BZOJ 4796 Key Knocking相关推荐

  1. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks

    Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...

  2. GYM CERC 16 K Key Knocking 构造

    Problem K 题意:给出长度为3n的01串,定义一个串的价值为:相邻不同的个数+1.例如011010100 价值为7. 操作反转两个相邻元素:将[x,x+1]两个元素的值反转,0->1,1 ...

  3. Codeforces Gym 101173 K. Key Knocking (构造)

    题意 对于给定的长为 3×N3\times N 的 01 字符串 S,求在最多变换 N 次下使得字符串 S 的 weight >= 2n . 字符串的 weight 为 相邻不同字符的个数 + ...

  4. [GYM101173K] CERC 16 K.Key Knocking 构造

    题目大意:定义一个串的价值为相邻不同的个数+1+1+1,给定一个长度为3n3n3n的字符串,要求通过最多nnn次操作,使得串的价值至少为2n2n2n.操作反转两个相邻元素:将[x],[x+1][x], ...

  5. 构造 Codeforces Round #275 (Div. 2) C. Diverse Permutation

    题目传送门 1 /* 2 构造:首先先选好k个不同的值,从1到k,按要求把数字放好,其余的随便放.因为是绝对差值,从n开始一下一上, 3 这样保证不会超出边界并且以防其余的数相邻绝对值差>k 4 ...

  6. Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven)

    Codeforces Gym 101086 M ACPC Headquarters : AASTMT (Stairway to Heaven) 题目来源: Codeforces 题意: 给出一些比赛, ...

  7. [Codeforces Gym 101651/100725B] Banal Tickets

    Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...

  8. Arthas 开源一周年,GitHub Star 16 K ,我们一直在坚持什么?

    缘起 最近看到一个很流行的标题,<开源XX年,star XXX,我是如何坚持的>. 看到这样的标题,忽然发觉 Arthas 从 2018 年 9 月开源以来,刚好一年了,正好在这个秋高气爽 ...

  9. GYM 101173 K.Key Knocking(构造)

    原题链接 参考自 问题描述:一个长度为3*n的01串,每次可以翻转连续的两个字符,要求至多翻转n次使得这个3*n的串至少有2*n个连续的段且相邻两端不一样(就是连续的0算一段,然后连续的1,-) 解法 ...

最新文章

  1. Coolite 中GridView点击行中的按钮时跳转至不同的页面
  2. Want to archive tables? Use Percona Toolkit’s pt-archiver--转载
  3. 百度Create大会:百度AI安全研究的进展与愿景
  4. Java中的Properties类详解Properties配置文件
  5. BZOJ 5249: [2018多省省队联测]IIIDX(贪心 + 线段树)
  6. STM32使用SPI通信驱动2.4G无线射频模块发送数据
  7. myeclipse上进行tomcat远程调试
  8. python里面print是什么意思_python里print是什么意思
  9. 设单片机的晶振频率为6mhz c语言,单片机习题科学出版社.doc
  10. SinGAN实现的单图动画,ICCV 2019 Best Paper
  11. python入门——P37类和对象:面向对象编程
  12. 两个字符串的最长公共子序列长度_算法学习笔记(58): 最长公共子序列
  13. 弗拉门戈-吉普赛婚礼-保利剧院
  14. 2011-6-22精品软件【清风网络整理】
  15. PPT去除页码的方法
  16. ARM架构——转自维基百科
  17. 3dmax顶点动画导入unity_用3dMax给lol人物模型制作表情动画并导入Unity
  18. c++字符串题目:小草与小球
  19. 火狐浏览器修改默认搜索引擎和添加搜索引擎
  20. 2021年汽车和消费品安全、机动车排放召回情况及主要缺陷

热门文章

  1. Python开发 CDN查询子域名查询
  2. 2015年11月27日 野外生存(一)刀
  3. 解决background中图片太大只显示一部分
  4. weex scroller滚动列表实践
  5. 第十二周项目四----利用遍历思想求解图问题之输出简单路径
  6. c语言启动程序句柄无效,U盘上打开EXE文件提示句柄无效
  7. c语言数制转换程序,数制转换(C语言实现)
  8. R语言关联分析之啤酒和尿布
  9. 红蓝眼睛逻辑问题推理
  10. element UI 学习