[BZOJ4582][Usaco2016 Open]Diamond Collector(二分+st表)
来源:互联网 发布:js单例模式应用场景 编辑:程序博客网 时间:2024/05/21 19:24
题目描述
传送门
题解
先排序是显然的吧= =
求出每一个点它向右能连续放到一个架子上的最右的一端和最长长度,因为是满足单调性的,其实扫一遍就可以,然而我当时dt写了个二分。。
然后对于一个点,再求它最右端的右边一直到n的最长长度的最大值。又写了个st表。。实际上从右向左扫一遍就可以。。。
代码
#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>using namespace std;#define N 50005#define sz 16int n,k,ans;int val[N],len[N],loc[N];int lg2[N],st[N][sz+5];int find(int i){ int l=i,r=n,mid,ans; while (l<=r) { mid=(l+r)>>1; if (val[mid]-val[i]<=k) ans=mid,l=mid+1; else r=mid-1; } return ans;}void init(){ for (int i=1,p=0;i<=n;++i) { while ((1<<p)<=i) p++; lg2[i]=p-1; } for (int i=1;i<=n;++i) st[i][0]=len[i]; for (int j=1;j<=sz;++j) for (int i=1;i<=n;++i) if (i+(1<<j)-1<=n) st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);}int query(int l,int r){ if (l>r) return 0; int k=lg2[r-l+1]; return max(st[l][k],st[r-(1<<k)+1][k]);}int main(){ scanf("%d%d",&n,&k); for (int i=1;i<=n;++i) scanf("%d",&val[i]); sort(val+1,val+n+1); for (int i=1;i<=n;++i) { loc[i]=find(i); len[i]=loc[i]-i+1; } init(); for (int i=1;i<=n;++i) ans=max(ans,len[i]+query(loc[i]+1,n)); printf("%d\n",ans);}
0 0
- [BZOJ4582][Usaco2016 Open]Diamond Collector(二分+st表)
- 【BZOJ4582】【Usaco2016 open】Diamond Collector 贪心
- BZOJ 4582: [Usaco2016 Open]Diamond Collector
- bzoj 4582: [Usaco2016 Open]Diamond Collector (单调队列+线段树)
- 贪心?DP?——BZOJ4582/Luogu3143 [USACO16OPEN]钻石收藏家Diamond Collector
- bzoj 4580: [Usaco2016 Open]248 (dp)
- [BZOJ4581][Usaco2016 Open]Field Reduction(dfs)
- [BZOJ4580][Usaco2016 Open]248(dp)
- HDU5289:Assignment(二分 + ST表)
- bzoj4576【Usaco2016 Open】262144
- BZOJ4580 [Usaco2016 Open]248
- BZOJ4580: [Usaco2016 Open]248
- [Usaco2016 Open]Field Reduction
- BZOJ4586: [Usaco2016 Open]Landscaping
- bzoj4586: [Usaco2016 Open]Landscaping
- 4580: [Usaco2016 Open]248
- bzoj 4581: [Usaco2016 Open]Field Reduction (dfs)
- [BZOJ4579][Usaco2016 Open]Closing the Farm(并查集)
- 欢迎大家关注我的微信公众号 一大一卜天下;
- VC2015编译旧工程找不到头文件stdio.h
- ImageView的基本参数和Bitmap的基本用法
- PHP中的Traits详解
- 微信小程序全方位深度解析【免费学习】
- [BZOJ4582][Usaco2016 Open]Diamond Collector(二分+st表)
- 欢迎使用CSDN-markdown编辑器
- webview禁止上拉
- HTTP协议之防盗链与反防盗链
- js阅读代码入门级易错点罗列1
- 模板之数论
- 博客资料
- java 截取文件后缀 方法
- 想搞定巴西客户?先学学巴西的“淘宝”