CodeForces 660C Hard Process (队列)
来源:互联网 发布:淘宝外围活动怎么参加 编辑:程序博客网 时间:2024/06/06 09:31
Description
You are given an array a with n elements. Each element of a is either0 or 1.
Let's denote the length of the longest subsegment of consecutive elements in a, consisting of only numbers one, as f(a). You can change no more thank zeroes to ones to maximize f(a).
Input
The first line contains two integers n andk (1 ≤ n ≤ 3·105, 0 ≤ k ≤ n) — the number of elements ina and the parameter k.
The second line contains n integers ai (0 ≤ ai ≤ 1) — the elements ofa.
Output
On the first line print a non-negative integer z — the maximal value off(a) after no more than k changes of zeroes to ones.
On the second line print n integers aj — the elements of the arraya after the changes.
If there are multiple answers, you can print any one of them.
Sample Input
7 11 0 0 1 1 0 1
41 0 0 1 1 1 1
10 21 0 0 1 0 1 0 1 0 1
51 0 0 1 1 1 1 1 0 1
题意:给出01数列和能将0变成1的次数,问最长的连续1的数列
解析:从左到右扫数列,每一个值都存入队列中,队列中保证次数小于等于最大变换次数,取最大长度即可。
#include<cstring>#include<string>#include<iostream>#include<queue>#include<cstdio>#include<algorithm>#include<map>#include<cstdlib>#include<cmath>#include<vector>//#pragma comment(linker, "/STACK:1024000000,1024000000");using namespace std;#define INF 0x3f3f3f3fint a[300005];int que[300005];int main(){ int n,k; while(scanf("%d%d",&n,&k)!=EOF) { for(int i=0;i<n;i++) { scanf("%d",&a[i]); } int l=-1,r=-1,ans=0; int sum=0; int s=0,t=-1; for(int i=0;i<n;i++) { if(a[i]) que[++t]=a[i]; else { if(sum==k) { while(sum==k) { sum-=(1^que[s++]); } } que[++t]=a[i]; sum++; } if(t-s+1>ans) ans=t-s+1,r=i,l=r-(t-s+1)+1; } printf("%d\n",ans); for(int i=0;i<n-1;i++) { if(i>=l&&i<=r) printf("1 "); else printf("%d ",a[i]); } if(n-1>=l&&n-1<=r) printf("1\n"); else printf("%d\n",a[n-1]); } return 0;}
- CodeForces 660C Hard Process (队列)
- CodeForces 660C Hard Process
- codeforces 660C Hard Process
- codeforces 660C Hard Process
- CodeForces - 660C Hard Process (二分)好题
- 【CodeForces】660C - Hard Process(二分,尺取法)
- Codeforces 660C Hard Process 【二分】
- Codeforces 660C Hard Process【二分 Or 尺取】
- Codeforces 660C-Hard Process【尺取法经典练习】
- Codeforces 660C Hard Process【二分】经典题!好题!
- Codeforces--660A--Hard Process(二分好题)
- Hard Process CodeForces
- CF#660 C. Hard Process(尺取法)
- Educational Codeforces Round 11——C. Hard Process(YY)
- Educational Codeforces Round 11 C. Hard Process 尺取法
- C. Hard Process
- Codeforces 706C Hard problem (DP)
- CodeForces 706 C. Hard problem(dp)
- 详细解析:影响各类服务器性能瓶颈的因素
- Pop Sequence
- Spring的OpenEntityManagerInViewFilter
- OpenCV学习笔记(八)—— OpenCV 3.1.0 + opencv_contrib编译(Windows)
- iOS 在视图控制器里面判断 应用程序的前台
- CodeForces 660C Hard Process (队列)
- java基础——反射
- opencv摄像头视频+帧保存为图片
- 20160422-Eclipse注释设置
- Unity对象池(一)
- jdbc数据源配置
- ionic 路由页面间传递复杂参数
- HTML转义字符
- IOS 设置label内的字体大小适应label的宽度