[GYM101173K] CERC 16 K.Key Knocking 构造
题目大意:定义一个串的价值为相邻不同的个数+1+1+1,给定一个长度为3n3n3n的字符串,要求通过最多nnn次操作,使得串的价值至少为2n2n2n。操作反转两个相邻元素:将[x],[x+1][x],[x+1][x],[x+1]两个元素的值反转,0→1,1→00 \rightarrow 1,1 \rightarrow 00→1,1→0.
思路:每333个字符执行一次分割,只要能把每组分成222段而且和前面的不相连,最后段数一定不小于2n2n2n。因此首先判断前一个字符,然后根据前一个字符枚举当前333个字符的状态,共161616种状态,去除已经分好不需要操作的状态共888种状态。
bef = 0
000
001
011
111
bef = 1
000
100
110
111
分别计数判断即可。
#include <bits/stdc++.h>
using namespace std;int ans[5000010], cnt = 0;inline void solve(){string str; cin >> str;int n = str.length();str = ' ' + str;for(int i = 1; i + 2 <= n; i += 3){int bef = str[i - 1] - '0', fir = str[i] - '0', sec = str[i + 1] - '0', thd = str[i + 2] - '0';if(!bef){if(!fir && !sec && !thd) ans[++cnt] = i;else if(!fir && !sec && thd) ans[++cnt] = i + 1, str[i + 2] = '0';else if(!fir && sec && thd) ans[++cnt] = i;else if(fir && sec && thd) ans[++cnt] = i + 1, str[i + 2] = '0';}else{if(!fir && !sec && !thd) ans[++cnt] = i + 1, str[i + 2] = '1';else if(fir && !sec && !thd) ans[++cnt] = i;else if(fir && sec && !thd) ans[++cnt] = i + 1, str[i + 2] = '1';else if(fir && sec && thd) ans[++cnt] = i;}}cout << cnt << endl;for(int i = 1; i <= cnt; i++) cout << ans[i] << (i == cnt ? '\n' : ' ');
}signed main(){solve();
}
[GYM101173K] CERC 16 K.Key Knocking 构造相关推荐
- GYM CERC 16 K Key Knocking 构造
Problem K 题意:给出长度为3n的01串,定义一个串的价值为:相邻不同的个数+1.例如011010100 价值为7. 操作反转两个相邻元素:将[x,x+1]两个元素的值反转,0->1,1 ...
- [构造] Codeforces Gym 101173 CERC 16 K BZOJ 4796 Key Knocking
每三个一起考虑 不论如何 我们都可以进行最多一次操作使得答案加2 就好了 #include<cstdio> #include<cstdlib> #include<algo ...
- Codeforces Gym 101173 K. Key Knocking (构造)
题意 对于给定的长为 3×N3\times N 的 01 字符串 S,求在最多变换 N 次下使得字符串 S 的 weight >= 2n . 字符串的 weight 为 相邻不同字符的个数 + ...
- GYM 101173 K.Key Knocking(构造)
原题链接 参考自 问题描述:一个长度为3*n的01串,每次可以翻转连续的两个字符,要求至多翻转n次使得这个3*n的串至少有2*n个连续的段且相邻两端不一样(就是连续的0算一段,然后连续的1,-) 解法 ...
- Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目,非常有意思. 这里用到的思想是归并排序! 多路归并排序 ...
- Arthas 开源一周年,GitHub Star 16 K ,我们一直在坚持什么?
缘起 最近看到一个很流行的标题,<开源XX年,star XXX,我是如何坚持的>. 看到这样的标题,忽然发觉 Arthas 从 2018 年 9 月开源以来,刚好一年了,正好在这个秋高气爽 ...
- HashMap中的putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict)解读
在面试中我们会经常遇到关于HashMap的问题,这里我写了我对HashMap里面一个挺重要的方法 putVal(int hash, K key, V value, boolean onlyIfAbse ...
- Gym-101173K Key Knocking 思维+贪心
这道题感觉是道很好的贪心题.主要问题是"怎么贪". 先附上大佬博客Orz: http://www.cnblogs.com/ShuraK/p/9557440.html https:/ ...
- K Co-prime Permutation 构造,gcd,互质(2020.12.南京)
题意 : 求构造一个n的排列,满足其中恰好k个元素与下标互质,如果不能则输出-1 思路 : 让前k个与下标偏移1,后面的都与下标相同即可 当且仅当k=0时,无解,输出-1 #include <i ...
最新文章
- 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(2)
- 菜鸟建站别发愁,省钱建站新攻略!
- Android图片缓存之Lru算法
- socket编码问题
- linux+gpfs配置文件,GPFS for linux实施
- Android之退出应用关闭项目每个Activity的总结
- 推荐系统图算法实用干货汇总(含论文、代码、样例教程)
- 带虚函数的类的sizeof分析
- 初学者python笔记(os模块、sys模块)
- WORD批量更改所有图片大小
- 【渝粤教育】国家开放大学2018年春季 7406-22T金融统计分析 参考试题
- 重置单例对象Singleton Swift
- JDK1.8中文帮助文档下载
- 安信可nbiot模块_安信可wifi模组特征
- Ansible使用基础之tags标记
- 2022年国家法定节假日放假时间安排
- 项目实训(十六)FPS游戏之PUN角色位移同步,动画状态同步
- 十二载征程犹未止,看今朝星光尽闪耀丨万字长文回顾2023数据技术嘉年华
- 如何通过优化物流体验的技术来提高客单价?
- 解决click在ios反应慢的问题
热门文章
- cad的lisp画线_Lisp CAD 求助高手!怎么通过代码实现连续画直线?
- 后台如何清理软Raid
- OpenGL学习笔记--配置VS环境
- lol手游日服服务器未响应,LOL手游进不去怎么回事?日服登陆失败解决办法[多图]...
- 如何让linux时间与internet时间同步(centos)
- Windows Git 多用户多仓库配置
- Java---SSM---Spring(1)
- Android---性能优化方案分享,高级android开发强化实战pdf
- 计算机操作系统之设备管理思维导图
- asyncio 系列五、asyncio的事件循环