BZOJ 4582: [Usaco2016 Open]Diamond Collector
Descrirption
给你一个长度为 \(n\) 的序列,求将它分成两个序列后最多个数,每个序列最大值最小值不能超过 \(k\)
Sol
二分+DP.
排一下序,找出以这个点结尾和开始的位置.
这个玩意可以二分也可以用单调队列,随便搞啊...
然后统计答案就是枚举第二个序列的起点,然后往后扫的时候统计一下,第一个序列的最大长度就可以了.
Code
/**************************************************************
Problem: 4582
User: BeiYu
Language: C++
Result: Accepted
Time:76 ms
Memory:1876 kb
****************************************************************/ #include <cstdio>
#include <algorithm>
#include <iostream>
using namespace std; const int N =50050; int n,k,ans;
int a[N];
int f[N],g[N]; inline int in(int x=0){ scanf("%d",&x);return x; }
int uppp(int x){// >=
int l=1,r=n,mid;
for(;l<=r;){
mid=(l+r)>>1;
if(a[mid] < x) l=mid+1;
else r=mid-1;
}return l;
}
int lwww(int x){//<=
int l=1,r=n,mid;
for(;l<=r;){
mid=(l+r)>>1;
if(a[mid] <= x) l=mid+1;
else r=mid-1;
}return r;
}
int main(){
n=in(),k=in();
for(int i=1;i<=n;i++) a[i]=in();
sort(a+1,a+n+1); for(int i=1;i<=n;i++){
f[i]=i-uppp(a[i]-k)+1;
g[i]=lwww(a[i]+k)-i+1;
} // for(int i=1;i<=n;i++) cout<<a[i]<<" ";cout<<endl;
// for(int i=1;i<=n;i++) cout<<f[i]<<" ";cout<<endl;
// for(int i=1;i<=n;i++) cout<<g[i]<<" ";cout<<endl; for(int i=1;i<=n;i++){
ans=max(ans,f[i-1]+g[i]);
f[i]=max(f[i],f[i-1]);
}
cout<<ans<<endl;
return 0;
}
BZOJ 4582: [Usaco2016 Open]Diamond Collector的更多相关文章
- Bzoj 4582 [Usaco2016 Open] Diamond Collector 题解
4582: [Usaco2016 Open]Diamond Collector Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 204 Solved: ...
- BZOJ 4582 [Usaco2016 Open]Diamond Collector:贪心【相差不超过k】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=4582 题意: 给你n个数. 让你将其中的一些数放入两个不同的集合中,并保证同一集合内两两元 ...
- bzoj4582[Usaco2016 Open]Diamond Collector
bzoj4582[Usaco2016 Open]Diamond Collector 题意: n个钻石,每个都有一个大小,现在将其装进2个盒子里,每个盒子里的钻石最大的与最小的大小不能超过k,问最多能装 ...
- [Usaco2016 Open]Diamond Collector
题目描述 Bessie the cow, always a fan of shiny objects, has taken up a hobby of mining diamonds in her s ...
- BZOJ 4576: [Usaco2016 Open]262144
Description 一个序列,每次可以将两个相同的数合成一个数,价值+1,求最后最大价值 \(n \leqslant 262144\) Sol DP. 这道题是 BZOJ 4580: [Usaco ...
- Diamond Collector
Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has taken up a hobby of mining ...
- 洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 解题报告
P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has ta ...
- Diamond Collector (动态规划)
问题 I: Diamond Collector 时间限制: 1 Sec 内存限制: 64 MB提交: 22 解决: 7[提交][状态][讨论版] 题目描述 Bessie the cow, alwa ...
- 洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题解
P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题目描述 Bessie the cow, always a fan of shiny objects, has ta ...
随机推荐
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
的最佳方案 标签: Android屏幕旋转AsyncTaskProgressDialog 2014-07-19 09:25 39227人阅读 评论(46) 收藏 举报 分类: [android 进阶之 ...
- .net session_end
在做asp.net编程开发的时候,我遇见这样的问题,一个用户只能在一台机器上登录, 如果有用户在其他机器上登录,系统将提示该用户已经登录!当前登陆非法!我的做法是: 用Application变量保存已 ...
- ffmbc——广播电视以及专业用途量身定制的FFmpeg
做项目遇到针对于mpegts多节目流转码的问题,看遍了ffmpeg的参数都得不到解决办法,最后在雷神的博客中看到了ffmbc: 结果,还是没解决问题,但是看起来改改ffmbc的代码还是相对简单一些,抽 ...
- 在openwrt装ipk包
用到putty终端和winsp两个软件 其中winsp是连接上192.168.1.1(文件协议选SCP),然后将ipk包放进去 然后用putty进入192.168.1.1 @root账号密码填完--- ...
- JavaScript------脚本化HTTP
以下: 1.HTTP:超文本传输协议: 2.Web应用架构: Ajax (JSONP):请求服务器 Comet: 服务器推送: 3.XMLHttpRequest请求: var requerst ...
- MongoDB学习笔记一
操作系统:Windows7 1.下载MongoDB 2.6.5服务端,并安装 网址:http://pan.baidu.com/s/1dDfoJAh 说明:网上很多都不需要安装的,这个需要安装. 2.添 ...
- ECharts学习(2)--饼状图之南丁格尔图
1.上一篇中讲了如何绘制一个简单的柱状图,这次要画的是饼图,饼图主要是通过扇形的弧度表现不同类目的数据在总和中的占比,它的数据格式比柱状图更简单,只有一维的数值,不需要给类目.因为不在直角坐标系上,所 ...
- Python学习之day2
1.执行Python脚本时打印的字符有颜色 print "\033[32;1mhello\033[0m" #打印绿色 print "\033[31;1mhello\033 ...
- Java transient关键字使用小记
哎,虽然自己最熟的是Java,但很多Java基础知识都不知道,比如transient关键字以前都没用到过,所以不知道它的作用是什么,今天做笔试题时发现有一题是关于这个的,于是花个时间整理下transi ...
- Delphi dll 断点调试
1.dll 要有一个依托的exe(怎么做 相信用dll了一定知道) 2.选项中的compling中的debugging中的选项,linking中的所有选项 3.最后一个也就是最重要的 run中的par ...