[2017纪中11-1]背包 二分
来源:互联网 发布:ubuntu安装pyqt 编辑:程序博客网 时间:2024/06/07 06:52
题面
先考虑数据随机。先把物品排好序,每次二分出买的那个价格最大的物品,因为数据随机,买不了多少个就没钱了。
但构造的数据可以卡,于是考虑预处理一个价格前缀和,每次像之前一样二分出能卖的右端点R,然后在二分一个能取走的最长区间[L,R],一次把他们去玩。可以证明这样复杂度是O(nlog^2n)的,因为每次剩下的钱至少变成原来的一半。设钱数为M,[L,R]的价格和于M-C,假设M-C>M/2,那么L-1的价格C’>M-C>M/2,推出C’>C,矛盾。
代码:
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#define ll long longusing namespace std;const int maxn=100010;int n,m;ll s[maxn],r[maxn];struct node{ ll v,w;}a[maxn];bool operator <(const node& p,const node &q) { if(p.v==q.v) return p.w<q.w; return p.v<q.v;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%lld%lld",&a[i].v,&a[i].w); sort(a+1,a+n+1); for(int i=1;i<=n;i++) { s[i]=s[i-1]+a[i].v; r[i]=r[i-1]+a[i].w; } while(m--) { int p=n,R=n,q; ll ans=0; node c;c.w=1e13; scanf("%lld",&c.v); while(R>0&&c.v>0) { p=lower_bound(a+1,a+R+1,c)-a-1; q=lower_bound(s,s+R+1,s[p]-c.v)-s; c.v-=s[p]-s[q]; ans+=r[p]-r[q]; R=q; } printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- [2017纪中11-1]背包 二分
- [2017纪中11-9]乘积 数论+分组背包
- SSL2834 2017年11月4日提高组T2 背包(二分)
- hdu5188 二分 or 背包
- Inviting Friends(二分+背包)
- Construction sets 二分+背包
- hdu3244Inviting Friends(二分+完全背包)
- 二分查找,背包问题v3
- [2017纪中10-26]摘Galo 树型背包
- [2017纪中11-6]拆网线 树型DP/二分图匹配
- [2017纪中11-6]奇怪的队列 树状数组+二分/线段树
- [2017纪中10-30]Matrix 二分答案+数论
- 采药 纪中2540 背包问题
- 【HDU】5313 Bipartite Graph【二分图+背包】
- NYOJ 还是01背包(枚举+二分)
- 超大背包问题(枚举二分)
- [bzoj4753][Jsoi2016]最佳团体 树上背包+二分
- UVA 1627 【二分图判定+背包问题】
- 个人收藏的一些很有性价比的Github链接
- CAIOJ1034 二叉树的后序遍历(经典递归)
- 【spring配置】——spring整合Quartz定时器
- Xcode 真机运行报错:the application could not be verified.
- VMware虚拟化
- [2017纪中11-1]背包 二分
- 自定义只读模型
- 服务器开发整合
- python将文件夹里所有的txt文件内容写入excel
- vmware 14 pro许可证秘钥
- AWS security group允许同组内主机访问
- 数据库优化之MySQL优化(三):
- ExtJS 4.2 treeStore设置autoLoad但是还是会自动加载的问题
- Git 【Mac 系统下搭建本地 Git 服务器】