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;
}

小结:这种题多做吧!

转载于:https://www.cnblogs.com/ShuraK/p/9557440.html

[bzoj4796][CERC2016]Key Knocking_乱搞相关推荐

  1. AcWing 397. 逃不掉的路(边双连通分量缩点成树 + 树链剖分乱搞)

    整理的算法模板合集: ACM模板 我们知道在同一个边双连通分量中的点没有必经边(因为至少有两条分离的路径). 所以我们直接tarjan求出桥后缩点,然后求一下树上两点间的距离即可. 那么如何求树上两点 ...

  2. bzoj 1050: [HAOI2006]旅行comf(codevs.cn 1001 舒适的路线) 快排+并查集乱搞

    没用的话:好像很久没发博客了,主要是懒太蒟找不到水题.我绝对没弃坑...^_^ 还用些话:本文为博主原创文章,若转载请注明原网址和作者. 进入正题: 先pa网址: bzoj :http://www.l ...

  3. BZOJ-1800 飞行棋 数学+乱搞

    这道题感觉就是乱搞,O(n^4)都毫无问题 1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 1172 So ...

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

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

  5. BZOJ4401:块的计数(乱搞)

    Description 小Y最近从同学那里听说了一个十分牛B的高级数据结构--块状树.听说这种数据结构能在sqrt(N)的时间内维护树上的各种信息,十分的高效.当然,无聊的小Y对这种事情毫无兴趣,只是 ...

  6. Luogu3732 [HAOI2017] 供给侧改革 【后缀数组】【线段树】【乱搞】

    题目分析: 这道题我是乱搞的,因为他说$01$串是随机的. 那么我们可以猜测能够让LCP变大的地方很少.求出后缀数组之后可能让LCP变大的地方就等价于从大到小往height里动态加点同时维护这个点左右 ...

  7. 【uoj#209】[UER #6]票数统计 组合数+乱搞

    题目描述 一个长度为 $n$ 的序列,每个位置为 $0$ 或 $1$ 两种.现在给出 $m$ 个限制条件,第 $i$ 个限制条件给出 $x_i$ .$y_i$ ,要求至少满足以下两个条件之一: 序列的 ...

  8. 【NOI2018】你的名字【后缀自动机】【可持久化线段树合并】【乱搞】

    题意:给一个串 SSS,qqq 次询问,每次给定串 TTT 和 l,rl,rl,r ,求有多少个本质不同的串是 TTT 的子串而不是 Sl-rS_{l\dots r}Sl-r​ 的子串. ∣S∣≤5× ...

  9. codeforces1496 D. Let‘s Go Hiking(乱搞+讨论)

    这题我tm服了,考试中途肯定添加了一组数据,提交完A了之后,还有20min结束,感觉写不了下一个题了,就下班了,谁知道它有填了一组测试数据把我的乱搞给卡过去了,我又被fst了???然后我有乱改了一下又 ...

最新文章

  1. OSPF HELLO数据包
  2. [CTO札记]惊讶于警察尚未用LBS(手机定位服务)来追踪疑犯
  3. [wp7游戏]wp7~~飞行射击精品游戏~~集合贴
  4. python字典内存分析_(一)Python入门-3序列:18字典-核心底层原理-内存分析-查找值对象过程...
  5. QT的QAssociativeIterable类的使用
  6. redhat下给普通用户增加sudo命令,让他可以获得修改等权限
  7. 前端学习(2700):重读vue电商网站21之如何导入全局样式表
  8. java rf14bug_hadoop2.7.0集群,使用中遇到的bug及解决办法
  9. Python调用百度接口(情感倾向分析)和讯飞接口(语音识别、关键词提取)处理音频文件...
  10. 查询集 QuerySet
  11. SpringMVC之安全性(一)
  12. iOS11 tableview左滑到底禁用删除
  13. 手机端html本地存储,HTML5 web storage本地存储
  14. AJAX, JSON.js,Newtonsoft.Json.dll,nunit.framework.dll 源代码
  15. APK反编译之二:工具介绍
  16. shiro注册登录流程(如何加密加盐)+配置多个Ream+密码加密验证底层分析+Remember使用+不同密码比对器原理(二)
  17. 基于蜜蜂优化算法优化的卷积神经网络(CNN)图像分类——附代码
  18. 结对项目之需求分析与原型设计(选择和分配本科毕设导师)
  19. 手持PDA助力零售卖场管理
  20. gpgpu学习推荐书籍

热门文章

  1. 《魔兽世界》衰败之因:掉进“大数据陷阱”
  2. 阿里云计算acp认证报考条件及需要具备的知识
  3. rtklib-单点定位(pntpos.c)代码关键问题解析-satposs部分
  4. presto日期转换及计算
  5. 中国互联网公司最新市值排名(2012.12.06)
  6. [Android]Android P(9) WIFI学习笔记 - HAL (1)
  7. 政府行政管理思维与互联网思维
  8. 伤疤好了有黑印怎么办_疤痕留下黑印怎么办
  9. Unity3d在PC上竖屏运行
  10. 网络通信OSI七层或五层模型,路由协议(OSPF,IGRP等)