ZOJ3790_Consecutive Blocks
给出一个数组,最多可以删除k个数,问能够获得的最长的一个数字连续段为多少?
把所有相同的数字都提取出来,保存取得每个数字需要删除的数字,然后二分枚举就可以了。
召唤代码君:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#define maxn 500200
using namespace std; int a[maxn],b[maxn],first[maxn],next[maxn];
int Q[maxn],top,f[maxn];
bool vis[maxn];
int n,k,N,ans; void go(int cur)
{
vis[cur]=true;
if (next[cur]!=-){
go(next[cur]);
Q[top++]=cur-next[cur]-;
}
else Q[top++]=;
} int main()
{
while (scanf("%d%d",&n,&k)!=EOF){
for (int i=; i<n; i++){
scanf("%d",&a[i]);
b[i]=a[i];
}
sort(b,b+n);
N=unique(b,b+n)-b;
for (int i=; i<n; i++) a[i]=lower_bound(b,b+N,a[i])-b+;
memset(first,-,sizeof(int)*(n+));
for (int i=; i<n; i++) next[i]=first[a[i]],first[a[i]]=i;
memset(vis,false,sizeof(bool)*(n+));
ans=;
for (int i=n-; i>=; i--)
if (!vis[i]){
top=;
go(i);
for (int j=; j<top; j++) Q[j]+=Q[j-];
for (int pos=; pos<top; pos++){
if (Q[top-]-Q[pos]<=k){
ans=max(ans,top-pos);
break;
} int l=pos,r=top-,mid;
while (l<r){
mid=(l+r+)/;
if (Q[mid]-Q[pos]>k) r=mid-;
else l=mid;
}
ans=max(ans,l-pos+);
}
}
printf("%d\n",ans);
}
return ;
}
ZOJ3790_Consecutive Blocks的更多相关文章
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 【POJ-1390】Blocks 区间DP
Blocks Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 5252 Accepted: 2165 Descriptio ...
- 开发该选择Blocks还是Delegates
前文:网络上找了很多关于delegation和block的使用场景,发现没有很满意的解释,后来无意中在stablekernel找到了这篇文章,文中作者不仅仅是给出了解决方案,更值得我们深思的是作者独特 ...
- poj 1390 Blocks
poj 1390 Blocks 题意 一排带有颜色的砖块,每一个可以消除相同颜色的砖块,,每一次可以到块数k的平方分数.问怎么消能使分数最大.. 题解 此题在徐源盛<对一类动态规划问题的研究&g ...
- Java 同步代码块 - Synchronized Blocks
java锁实现原理: http://blog.csdn.net/endlu/article/details/51249156 The synchronized keyword can be used ...
- 区块 Blocks
Structure / Blocks / Demonstrate block regions
- 使用Code::blocks在windows下写网络程序
使用Code::blocks在windows下写网络程序 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创 ...
- Code::Blocks配置GTK+2和GTK+3
Code::Blocks配置GTK+2和GTK+3 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根 ...
- [翻译]理解Ruby中的blocks,Procs和lambda
原文出处:Understanding Ruby Blocks, Procs and Lambdas blocks,Procs和lambda(在编程领域被称为闭包)是Ruby中很强大的特性,也是最容易引 ...
随机推荐
- scrum.4
1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作愉快进展顺利 ...
- 向python文件传递参数
1. 向python传递单个参数: import sys print sys.argv[0] ##脚本名 print sys.argv[1] ## 第一个参数 2. 向python传递数组: pr ...
- JavaScript DOM编程艺术读书笔记(四)
第十章 实现动画效果 var repeat = "moveElement('"+elementID+"',"+final_x+","+fin ...
- Android笔记之——事件的发生
Java:package com.example.helloworld;import android.content.Intent;import android.support.v7.app.AppC ...
- cdnbest节点安装后连不上主控常见问题
1. 查看节点程序是否启动 ps -aux |grep kangle 2. 如果节点程序都有启动,可查看日志,节点连接的是不是你帐号的uid帐号或者是否有其他报错信息 tail -f /var/log ...
- 分享一个web存储方法
https://github.com/zhujiasheng/jquery-cookie/blob/master/src/jquery.cookie.js https://github.com/WQT ...
- 用node搭建静态文件服务器
占个坑,写个node静态文件服务器
- 九宝老师微信小程序开发的过程
- HFSS设计导入AD中
具体过程有些繁琐,录制了一个视频放在百度网盘了.亲测有效. 网盘地址:http://pan.baidu.com/s/1gfIBhC3 密码:ayoa
- libcurl 函数curl_easy_perform在release下崩溃的问题
今天遇到一个很奇怪的问题: 工程中用到了libcurl, debug可以正常运行,release每次都崩溃,断到curl_easy_perform这一行.堆栈中也得不到有用信息,于是GOOGLE一番, ...