ZCMU—1623
2016-12-08 14:12
239 查看
1623: 翻转序列
Time Limit: 1 Sec Memory Limit: 128 MB[Submit][Status][Web
Board]
Description
给你一串01序列,每次翻转连续k长度的序列(0变1,1变0),使所有的字符都变成0,要求翻转最小的次数,如果不存在输出T T.Input
输入一个01串,第二行输入一个k
01串长度,k<=100000.
Output
输出最小翻转次数,若不存在则输出T TSample Input
1113
1111
3
Sample Output
1T T
【分析】
一开始又以为是dp...稍微模拟一下就不难发现,其实并不需要考虑的那么复杂,这道题因为每次只能翻k个长度所以,只要从头扫描一遍,需要翻的就直接翻...所以这道题就变成了如何模拟不超时的问题...那就不难了只要考虑当前判断的位置被翻了几次记录一下就好了~然后就是判断一下末尾k-1位是否有1如果有就T T
(感觉自己越来越蠢了.....)
【代码】
#include <stdio.h> #include <string.h> using namespace std; int main() { int a[101000]; char s[101000]; int k; while(~scanf("%s%d",s,&k)) { int len=strlen(s); int x=0,sum=0,i; memset(a,0,sizeof(a)); for(i=0;i+k-1<len;i++) { x+=a[i]; if((x%2==0&&s[i]=='1') || (x%2==1&&s[i]=='0')) { sum++; x++; a[i+k]--; } } for(;i<len;i++) { x+=a[i]; if((x%2==0&&s[i]=='1') || (x%2==1&&s[i]=='0')) { printf("T T\n"); goto out; } } printf("%d\n",sum); out:; } return 0; }
相关文章推荐
- BJTU 1623 Problem C. Course Planning
- UVa - 1623 - Enter The Dragon
- zcmu_1674
- zcmu-1685
- zcmu 1075
- ZCMU—1540
- ZCMU—1131
- ZCMU----1779
- ZCMU-1658
- ZCMU-1750
- ZCMU-1312-奇偶数
- ZCMU-1773-Mode
- ZCMU-1639-残缺的棋盘
- ZCMU-1540-第K大个数
- ZCMU-1653-这样真的好么(*^*)
- ZCMU-1133- 第九章:致我们终将逝去的青春
- ZCMU--1825-分解质因数
- ZCMU—1862
- ZCMU-1597-TomCat的数独
- ZCMU—B