qduoj 79 翻转游戏(开关问题)
来源:互联网 发布:java replace的原理 编辑:程序博客网 时间:2024/06/06 16:34
题目地址:点击打开链接
思路:
普通的方法从左到右枚举翻转n^2复杂度会超时。
用白书上的维护记录区间的翻转次数,可以达到nlogn复杂度。
代码:
#include<iostream>#include<cstdio>#include<cstring>using namespace std;const int maxn = 1e5+5;char str[maxn];int k, m, a[maxn], f[maxn];bool solve(){ memset(f, 0, sizeof(f)); int res = 0, sum = 0, len = strlen(str); for(int i = 0; i < len; i++) a[i] = str[i]-'0'; for(int i = 0; i+k-1 < len; i++) { if((a[i]+sum)%2) { res++; f[i] = 1; sum++; } if(i-k+1 >= 0) sum -= f[i-k+1]; } for(int i = len-k+1; i < len; i++) { if((a[i]+sum)%2) return 0; if(i-k+1 >= 0) sum -= f[i-k+1]; } return res <= m;}int main(void){ int t; cin >> t; while(t--) { scanf("%d%d", &k, &m); scanf(" %s", str); puts(solve() ? "YES" : "NO"); } return 0;}
0 0
- qduoj 79 翻转游戏(开关问题)
- qduoj 79 翻转游戏 经典牛翻地问题 思维
- 翻转--开关问题
- 翻转问题(开关,开灯问题)求解技巧
- 翻转问题(开关)入门——POJ3276, POJ3279
- qduoj 76 映射游戏
- POJ 1222 EXTENDED LIGHTS OUT 二进制高斯消元 (开关翻转问题)
- ☆HDU 2209 翻纸牌游戏(反转、开关问题)
- qduoj LC的涂色游戏(快速幂)
- hdoj 2209 翻纸牌游戏(翻转问题)
- qduoj 114 阶乘问题
- qduoj LC的涂色游戏
- Unity 手机游戏屏幕翻转问题
- qduoj 分辣条2(完全背包,装满问题)
- 开关问题(高斯消元)
- poj3276(开关问题)
- poj3276(开关问题)
- poj 1830 开关问题(高斯消元(开关问题))
- Hadoop学习---第四篇Mapreducer里的Partitioner
- POJ2031 Building a Space Station(最小生成树,Prim)
- Hadoop-zookeeper
- 【codeforces 782B】The Meeting Place Cannot Be Changed(二分)
- 多线程编程(1.线程池ThreadPool)
- qduoj 79 翻转游戏(开关问题)
- Azure SQL 数据库中的DTU和eDTU是什么
- ZZL字符串匹配算法
- 什么是P问题、NP问题和NPC问题
- iOS开发总结之代码规范
- JavaWeb三大框架(Hibernate+Struts2+Spring)
- 彻底理解ThreadLocal
- 如何用Python和PyInstaller编写Windows恶意代码
- libevent源码深度剖析十二