ZOJ 3790 Consecutive Blocks
来源:互联网 发布:航天飞机 知乎 编辑:程序博客网 时间:2024/05/08 10:07
大致题意就是给你一个数列,让你最多移除K个数字,使得连续的相同数字的长度最大,并求出最大长度。
我们将此序列按颜色排序,颜色相同的话按位置排序,那么排完序之后颜色相同的blocks就在一起,只是他们的位置不同而已。因此颜色相同的两个相邻blocks的位置之差-1就是要移除的个数。
当发现所剩的移除个数不足时,那么就删除左边已经连续放在一起的block,同时把那部分所消耗的移除个数加回来;如果所剩移除个数充足那么长度就+1。如果发现相邻的两个block颜色不同那么就要重新开始,所剩移除个数就要重新赋值为初值K,左边的位置变为i,长度变为1,重新计算。
#include<cstdio>#include<string>#include<cstring>#include<iostream>#include<algorithm>using namespace std; const int MAXN = 200010; struct Node{ int color, pos; bool operator < (const Node& A) const{ if(color == A.color) return pos < A.pos; return color < A.color; } }; Node block[MAXN]; int main(){ int n, k; #ifndef ONLINE_JUDGE freopen("in.cpp", "r", stdin); #endif while(~scanf("%d%d", &n, &k)){ for(int i = 1; i <= n; i ++){ scanf("%d", &block[i].color); block[i].pos = i; } sort(block + 1, block + n + 1); int ans = 1, cnt = 1, tmp = k, left = 1; for(int i = 2; i <= n; i ++){ if(block[i].color == block[i-1].color){ cnt ++; tmp -= block[i].pos - block[i-1].pos - 1; while(tmp < 0){ cnt --; tmp += block[left+1].pos - block[left].pos - 1; left++; } ans = max(ans, cnt); }else{ left = i; tmp = k; cnt = 1; } } printf("%d\n", ans); } return 0; }
0 0
- ZOJ 3790 Consecutive Blocks
- zoj-3790-Consecutive Blocks
- ZOJ 3790 Consecutive Blocks
- ZOJ 3790 Consecutive Blocks
- ZOJ 3790 Consecutive Blocks
- ZOJ 3790 Consecutive Blocks
- ZOJ 3790 Consecutive Blocks 贪心
- ZOJ 3790 Consecutive Blocks 模拟题
- ZOJ 3790 Consecutive Blocks 排序+扫描
- ZOJ 3790 Consecutive Blocks [排序+扫描]
- ZOJ 3790 Consecutive Blocks(迟取法)
- ZOJ 3790 Consecutive Blocks(尺取法)
- ZOJ 3790 Consecutive Blocks【离散化】【贪心】
- ZOJ月赛3790Consecutive Blocks(贪心)
- zoj 3790 Consecutive Blocks(链表重点是思想)
- ZOJ 3790 Consecutive Blocks(枚举+二分查找)
- ZOJ Consecutive Blocks(左右指针移动)
- ZOJ Monthly, June 2014 C - Consecutive Blocks
- android开发之常用小技巧
- hive QL 插入语法
- B. DZY Loves Strings
- 线程池相关技术
- 2014.07.15
- ZOJ 3790 Consecutive Blocks
- MyEclipse或Eclipse在线安装Aptana3插件
- 浏览器渲染页面的过程,以及重绘和重排
- 视频教程:卡尔曼滤波器的原理以及在MATLAB中的实现
- poj3126,宽度优先算法
- JAVA_WEB项目之Action层利用ModelDriven抽取BaseAction
- UVA Mapping the Swaps
- Android四大组件
- Class类的学习摘要: