GYM CERC 16 K Key Knocking 构造
来源:互联网 发布:淘宝访问受限怎么解决 编辑:程序博客网 时间:2024/06/06 03:35
Problem K
题意:给出长度为3n的01串,定义一个串的价值为:相邻不同的个数+1.例如011010100 价值为7.
操作反转两个相邻元素:将[x,x+1]两个元素的值反转,0->1,1->0.
n<=1e5,要求操作次数不超过n次 使得串的价值至少为2n.保证有解 输出任意一个可行的操作序列.
构造:每三个分成一组,每组的价值(只要为1,并且该组开头和前一组结尾不同)或者(该组价值为2)则至少凑成2n-1的得分.
题意:给出长度为3n的01串,定义一个串的价值为:相邻不同的个数+1.例如011010100 价值为7.
操作反转两个相邻元素:将[x,x+1]两个元素的值反转,0->1,1->0.
n<=1e5,要求操作次数不超过n次 使得串的价值至少为2n.保证有解 输出任意一个可行的操作序列.
构造:每三个分成一组,每组的价值(只要为1,并且该组开头和前一组结尾不同)或者(该组价值为2)则至少凑成2n-1的得分.
例如前一组结尾为0: 000->110 变一次得分+2 001->010 该组得分为2 010->010 不用变化. 每组最多只操作一次,满足题意.
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=3e5+5;char a[N];vector<int> res;int n,m;int main(){ while(scanf("%s",a+1)!=EOF) { res.clear(); n=strlen(a+1); a[0]='0'; for(int i=1;i<=n;i+=3) { int x=a[i]-'0',y=a[i+1]-'0',z=a[i+2]-'0'; if(a[i-1]=='0') { if(x==0&&y==0&&z==0) res.push_back(i); if(x==0&&y==0&&z==1)//0.001->0.010 res.push_back(i+1),a[i+2]='0'; if(x==0&&y==1&&z==1)//0.011->0.101 res.push_back(i); if(x==1&&y==1&&z==1) res.push_back(i+1),a[i+2]='0'; } else { if(x==1&&y==1&&z==1) res.push_back(i); if(x==1&&y==0&&z==0)//1.100->1.010 res.push_back(i); if(x==1&&y==1&&z==0)//1.110->1.101 res.push_back(i+1),a[i+2]='1'; if(x==0&&y==0&&z==0) res.push_back(i+1),a[i+2]='1'; } } printf("%d\n",res.size()); for(int i=0;i<res.size();i++) printf("%d ",res[i]); printf("\n"); } return 0;}/*000101000*/
阅读全文
0 0
- GYM CERC 16 K Key Knocking 构造
- GYM 101173 K.Key Knocking(构造)
- Codeforces Gym 101173 K. Key Knocking (构造)
- [2-SAT 构造] Codeforces Gym 101173 CERC 16 L. Lost Logic
- Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks
- Gym CERC 16 F Free Figuriness 思维+模拟
- Codeforces Gym 100623K Problem K. Key to Success
- [分治 杂题] Codeforces Gym 101173 CERC 16 G & BZOJ 4792 Geohash Grid
- CERC 2012 题解 (A~K)
- gym 100543 CERC 2014 L Outer space invaders
- 【中途相遇法】【STL】BAPC2014 K Key to Knowledge (Codeforces GYM 100526)
- [构造][度数序列的可图性]Codeforces Gym 100269K. Kids in a Friendly Class
- GYM 100685 K
- Gym 100796K Profact
- Gym 100947K-Jpeg
- codeforces [Gym-100814K]
- Gym-101498K
- Gym 101490K
- C和C++中const的区别,引用,一级指针和const组合
- Linux中jdb调试的一些简单命令
- Java内部类详解
- 矩阵连乘(动态规划)
- Spring Boot入门学习
- GYM CERC 16 K Key Knocking 构造
- 理解PostMessage
- 获取前一页存储数据的id
- 搭建本地git到服务器
- Servlet(二)
- 使用 AngularJS+Route路由+jQuery非空验证 切换不同按钮显示不同html页面功能
- spring boot 实战小试
- 导弹拦截(动态规划)
- L8 文件和目录权限chmod,更改所有者和所属组chown,umask,隐藏权限lsattr/chattr