C. Hard Process
来源:互联网 发布:linux mysql 源码安装 编辑:程序博客网 时间:2024/06/05 08:07
题目意思是改变最少的0,把它变成1,得到最长的全是1的序列。
题目的数据规模明显需要nlogn的算法,直接暴力n^2肯定会超时。
思路:首先定义一个数组sum保存到第i个结点时有多少个1.
然后遍历,从第i个结点开始能得到的最大长度,它等于1的个数加上可以改变成1的0的个数。
#include <cstdio>#include <cmath>#include <algorithm>using namespace std;int a[1000001], sum[1000001];int main( ){ int n, k;scanf("%d %d", &n, &k);for (int i = 1; i <= n; i ++)scanf("%d", &a[i]), sum[i] = sum[i - 1] + a[i];int ans = 0,t1,t2;for(int i=1;i<=n;i++){ int l=i,r=n; while(l<=r){ int mid=(l+r)>>1; if(mid-i+1<=k+sum[mid]-sum[i-1]) l=mid+1; else r=mid-1; } int pos=r; if(pos-i+1>ans){ ans=pos-i+1; t1=i; t2=pos; }}printf("%d\n", ans); for (int i = t1; i <= t2; i ++) a[i] = 1; for (int i = 1; i <= n; i ++) printf("%d ", a[i]); printf("\n");return 0;}
0 0
- C. Hard Process
- CodeForces 660C Hard Process
- codeforces 660C Hard Process
- codeforces 660C Hard Process
- [尺取法] CF660 C.Hard Process
- Codeforces 660C Hard Process 【二分】
- CodeForces 660C Hard Process (队列)
- Hard Process
- Codeforces 660C Hard Process【二分 Or 尺取】
- CodeForces - 660C Hard Process (二分)好题
- Codeforces 660C-Hard Process【尺取法经典练习】
- 【CodeForces】660C - Hard Process(二分,尺取法)
- Educational Codeforces Round 11 C. Hard Process 尺取法
- Codeforces 660C Hard Process【二分】经典题!好题!
- CF#660 C. Hard Process(尺取法)
- CF_660C Hard Process(二分)
- Hard Process 二分搜索
- cf Hard Process
- Land oj 1611 - Null (水)
- python编译错误的积累
- 迭代器Iterator接口
- PHP入门学习笔记之—— PHP 类与对象 (下)
- 从工程师到Leader成长之路
- C. Hard Process
- C 【函数 递归】
- SQLiteOpenHelper类的简化操作数据库(api查询方式)
- hdu1098(基础)
- 1002. A+B for Polynomials (25)
- 统计文本中某值字段数量-cat-awk-sort-uniq-c
- Excuses, Excuses!
- 百度 罪犯转移
- 1008