
5.31 codeforce_div2
时没有变化的情况(比如全0或全1)。 左边全0,右边全1的情况(如“0011”)。 左边全1,右边全0的情况(如“1100”)。
发布日期:2021-05-14 09:16:15
浏览次数:15
分类:精选文章
本文共 1452 字,大约阅读时间需要 4 分钟。
Subsequence Hate
题意:给一个只包含1和0的字符串,在N次操作(将一个1或0变为0或1)后,使它变为不含“101”或“010”的字符串。比如,经过某些操作后的字符串"01110"也算作不含“010”的结构。
输入:字符串
输出:操作次数N
思路:
因为只有三种特定的单调结构满足条件:
要实现这一点,可以将整个字符串分成两部分,左边和右边各自都服从同一种模式。为了达到这个目的,可以采用一种贪心策略:枚举所有可能的分割点,将哈希字符串分成前半部分和后半部分,并确保这两部分各自的字符是单调的。这种方法可以有效地找到所需的最小操作次数。
实现代码:
#include#include using namespace std;int minFlips(string s) { int n = s.size(); int left0 = 0, left1 = 0; int right0 = 0, right1 = 0; // 预处理左边部分 for(int i = 0; i < n; i++) { if(s[i] == '0') left0++; else left1++; } // 预处理右边部分 reverse(s.begin(), s.end()); for(int i = 0; i < n; i++) { if(s[i] == '0') right0++; else right1++; } // 回甲计算变动次数 int flip = 0; int current = '0'; for(int i = n-1; i >=0; i--) { if(s[i] != current) flip++; current = s[i]; } // 计算左右中齐调的问题 // .......}
游戏规则
目标是一个图表格,节点数量为n,以最少的步数达到目标节点的玩家获胜。特殊情况只有当目标节点的度为1时,否则胜负取决于节点的数量的奇偶性。具体来说,只要目标节点的度不是1,胜负只与节点数量的奇偶性有关。如果是偶数,则先手有必胜策略;如果是奇数,后手胜出。
练习代码
#include#include using namespace std;int solve(int n, int x, int a, int b) { vector deg(n+1); for(int i = 0; i
结构分析
- 字符串操作: 通过分析字符串的左右两部分,计算需要改变的次数。
- 博弈论问题: 判断胜负的关键因素在于节点的度数以及顶点数量的奇偶性。
- 实际算法实现: 通过前缀和后缀预处理,找到最优的分割点位置。
结论
通过具体的算法实现和对问题结构的深入分析,可以有效地解决这两个问题。优化后的算法能够在合理的时间内完成任务,并且通过预处理和贪心策略,确保所需的最小操作次数被准确找出。
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月16日 20时44分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【rabbitMQ】04 如何实现高可用?
2019-03-12
【自考】之信息资源管理(一)
2019-03-12
C# 文本框限制大全
2019-03-12
setup facatory9.0打包详细教程(含静默安装和卸载)
2019-03-12
ionic4 路由跳转传值
2019-03-12
CSDN 怎么写出好看的博客
2019-03-12
ENDC含义
2019-03-12
Java基本概念:方法
2019-03-12
pwn题shellcode收集
2019-03-12
使用docker搭建nfs实现容器间共享文件 nfs server nfs client
2019-03-12
CURL 发送请求详解
2019-03-12
python中的序列化
2019-03-12
django中使用celery执行异步任务实现
2019-03-12
区块链初步了解
2019-03-12
centos7安装telnet服务
2019-03-12
redis简单使用示例(附代码)
2019-03-12
centos7 安装 mongodb3.6.3
2019-03-12