Key Knocking bzoj-4796 CERC-2016

题目大意:描述没有题面短系列..题目链接

注释:$1\le n\le 10^5$。


想法

乱搞稳AC。考试的时候调试信息又一次杀死了我...

我们考虑:因为总长度是$3n$,要求答案不小于$2n-1$,所以我们期望每$3$个数都贡献$2$,而且最多对于每$3$个数更改一次。

分类讨论一下:

我们只需考虑$0$开头的三元组($1$开头的同理)

如果是$001$,我们动后两位,变成$010$,贡献为$2$,以此类推。

$010$不动

$011\rightarrow101$。

$000$的话我们判断一下:

如果这个三元组的前一个数是$0$,我们就把它变成$110$,反之我们将它变成$011$,这样我们仍然会让这个三元组对答案造成2的贡献。

如果这个三元组在开头,我们就把前两位取反即可。因为题目中自动给定了一个权值,我们把那个权值送给第一个三元组即可。

最后,附上丑陋的代码... ...

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
char s[300010];
int a[300010];
// int s[300010];
int cnt;
inline void SP(int x)
{
if(s[x]=='0') s[x]='1';
else if(s[x]=='1') s[x]='0';
if(s[x+1]=='1') s[x+1]='0';
else if(s[x+1]=='0') s[x+1]='1';
}
int main()
{
// freopen("key.in","r",stdin);
// freopen("key.out","w",stdout);
scanf("%s",s+1);
int k=strlen(s+1);
for(int i=1;i<=k-2;i+=3)
{
if(s[i]=='0'&&s[i+1]=='0'&&s[i+2]=='1') a[++cnt]=i+1,SP(i+1);
// if(s[i]=='0'&&s[i+1]=='1'&&s[i+2]=='0') a[++cnt]=i;
if(s[i]=='0'&&s[i+1]=='1'&&s[i+2]=='1') a[++cnt]=i,SP(i);
if(s[i]=='1'&&s[i+1]=='0'&&s[i+2]=='0') a[++cnt]=i,SP(i);
// if(s[i]=='1'&&s[i+1]=='0'&&s[i+2]=='1') a[++cnt]=i;
if(s[i]=='1'&&s[i+1]=='1'&&s[i+2]=='0') a[++cnt]=i+1,SP(i+1);
if(s[i]=='0'&&s[i+1]=='0'&&s[i+2]=='0')
{
if(i==1) a[++cnt]=i;
else if(s[i-1]=='0') a[++cnt]=i,SP(i);
else a[++cnt]=i+1,SP(i+1);
}
if(s[i]=='1'&&s[i+1]=='1'&&s[i+2]=='1')
{
if(i==1) a[++cnt]=i;
else if(s[i-1]=='1') a[++cnt]=i,SP(i);
else a[++cnt]=i+1,SP(i+1);
}
}
printf("%d\n",cnt);
for(int i=1;i<=cnt;i++)
{
printf("%d\n",a[i]);
}
return 0;
}

小结:这种题多做吧!

[bzoj4796][CERC2016]Key Knocking_乱搞的更多相关文章

  1. 【NOIP模拟赛】beautiful 乱搞(平衡树)+ST

    biubiu~~~ 我用平衡树处理的这道题,然而这种方法还是要看评测姬..... 正解是乱搞....就是枚举每一位数作为中位数,比他小的看做-1比他大的看做1,那么我们从一开始就有了一个绵延的山,我们 ...

  2. URAL 1827 Indigenous Wars(排序、乱搞)

    题意:给一个长度为n数组{a[i]}.有m个操作Ti,Si,Li表示找以Ti值结束,以Si值开始,长度为Li的连续子串.找到后,将区间的答案值设为1.一开始答案值全部为0.最后输出n个答案值. 好久没 ...

  3. UVA 11853 [dfs乱搞]

    /* 大连热身E题 不要低头,不要放弃,不要气馁,不要慌张 题意: 在1000×1000的格子内有很多个炮弹中心,半径给定. 为某人能否从西部边界出发,从东部边界走出. 不能输出不能,能的话输出最北边 ...

  4. Codeforces 732e [贪心][stl乱搞]

    /* 不要低头,不要放弃,不要气馁,不要慌张 题意: 给n个插座,m个电脑.每个插座都有一个电压,每个电脑都有需求电压. 每个插座可以接若干变压器,每个变压器可以使得电压变为x/2上取整. 有无限个变 ...

  5. 【BZOJ-4692】Beautiful Spacing 二分答案 + 乱搞(DP?)

    4692: Beautiful Spacing Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 46  Solved: 21[Submit][Statu ...

  6. 【BZOJ-3578】GTY的人类基因组计划2 set + map + Hash 乱搞

    3578: GTY的人类基因组计划2 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 367  Solved: 159[Submit][Status][ ...

  7. 【BZOJ-2937】建造酿酒厂 前缀和 + 展环为链 + 乱搞

    2937: [Poi2000]建造酿酒厂 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 70  Solved: 24[Submit][Status][D ...

  8. SCOI 2013 密码 & 乱搞

    题意: Fish 是一条生活在海里的鱼.有一天他很无聊,就到处去寻宝.他找到了位于海底深处的宫殿,但是一扇带有密码锁的大门却阻止了他的前进.通过翻阅古籍,Fish 得知了这个密码的相关信息:1. 该密 ...

  9. 种树 & 乱搞

    题意: 在一个(n+1)*(m+1)的网格点上种k棵树,树必须成一条直线,相邻两棵树距离不少于D,求方案数. SOL: 这题吧...巨坑无比,本来我的思路是枚举每一个从(0,0)到(i,j)的矩形,然 ...

随机推荐

  1. 一、Linux文件权限与目录配置

    行文结构如下: 用户和用户组 Linux文件权限概念 Linux目录配置 重点回顾 1.用户与用户组 Linux是个多用户.多任务的系统,可能有多人同时使用这台机器进行工作,为了考虑每个人的隐私和工作 ...

  2. IOException 简单解决方法

    java.lang.IllegalStateException异常解决方法 这个异常大多数是由文件读取,下载时抛出,但是偶尔也会由类型转换时异常抛出此异常. 错误:Optional int param ...

  3. 洛谷P1731生日蛋糕(dfs+剪枝)

    P1731 生日蛋糕 题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为R ...

  4. [Swift通天遁地]九、拔剑吧-(10)快速创建美观的聊天界面:可发送文字、表情、图片

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. asp.net core 2.0 Json结果的格式

    asp.net core 2.0 默认返回的结果格式是Json, 并使用json.net对结果默认做了camel case的转化(大概可理解为首字母小写). 这一点与老.net web api 不一样 ...

  6. 实战篇之实现 OutLook 中以 EDM 形式发送通知邮件

    1.写 Html5 的 EDM 模板 EDM 源代码示例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ...

  7. android webview 简单应用

    一直没有用过webView 在网上找了一个小例子,主要实现以下功能: 1.当webview加载网页的时候在标题栏上显示加载进度 2.隐藏webkit浏览器的地址栏 3.设置程序的标题为网页的标题 4. ...

  8. ios数据的基本类型和流程控制

    swift的声明变量方式和js是类似的.基本类型基本都和java的差不多,多了字符类型. let:用于声明常量: var:用于声明变量: 基本类型有:double,float,Int(数字类型):bo ...

  9. eclipse 安装svn插件记录

    每个人都有自己喜欢的和习惯的一套开发环境,其中对于喜欢用eclipse的同学来说.subclipse插件可以说是必不可少的插件了. 他的安装有两种方法,一种是在线安装.然而这种安装实在是太慢了,无法忍 ...

  10. 单例模式在多线程环境下的lazy模式为什么要加两个if(instance==null)

    刚才在看阿寻的博客”C#设计模式学习笔记-单例模式“时,发现了评论里有几个人在问单例模式在多线程环境下为什么lazy模式要加两个if进行判断,评论中的一个哥们剑过不留痕,给他们写了一个demo来告诉他 ...