HDU 5281 Senior's Gun 贪心
来源:互联网 发布:网络媒介的演变 编辑:程序博客网 时间:2024/05/17 05:12
HDU 5281
题意:n个射手,第i个射手能力值为a[i],m件物品,第j件物品等级为b[j].
若a[i]>=b[j] 则表示第i个选手能射中第j个物品 并且获得金钱a[i]-b[j].每个物品只有一件 每个射手只能射一次
n,m<=1e5,-1e9<=a[i],b[j]<=1e9.问总共最多能获得多少金钱.
如果知道能选x件物品,不用考虑谁选谁,总的贡献都是一样的为(a[1]+...a[x])-(b[1]+..b[x])
判定是用序列a前x大 去选序列b前x小的即可 然后就WA了...
题意:n个射手,第i个射手能力值为a[i],m件物品,第j件物品等级为b[j].
若a[i]>=b[j] 则表示第i个选手能射中第j个物品 并且获得金钱a[i]-b[j].每个物品只有一件 每个射手只能射一次
n,m<=1e5,-1e9<=a[i],b[j]<=1e9.问总共最多能获得多少金钱.
如果知道能选x件物品,不用考虑谁选谁,总的贡献都是一样的为(a[1]+...a[x])-(b[1]+..b[x])
判定是用序列a前x大 去选序列b前x小的即可 然后就WA了...
本题不是选的越多越好阿 贪心:选的k个中 攻击最小的要大于防御最大的,不然的话 同时舍弃这一组 还是能选k-1个,贡献增加.
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=1e5+5;ll n,m,a[N],b[N];bool check(int k){ for(int i=n,j=1;i>=n-k+1;i--,j++) { if(a[i]<b[j]) return false; } return true;}int main(){ int T; cin>>T; while(T--) { scanf("%lld%lld",&n,&m); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); for(int i=1;i<=m;i++) scanf("%lld",&b[i]); sort(a+1,a+1+n); sort(b+1,b+1+m); int l=0,r=min(n,m); while(l<=r) { int mid=l+r>>1; if(check(mid)) l=mid+1; else r=mid-1; } int k=l-1; ll ans=0; for(int i=1;i<=k;i++) ans-=b[i],ans+=a[n-i+1]; printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- hdu 5281 Senior's Gun(贪心)
- HDU 5281 Senior's Gun 贪心
- hdu 5281 Senior's Gun
- HDU 5281 Senior's Gun
- hdu 5281 Senior's Gun
- hdu-5281 Senior's Gun*
- HDU 5281 Senior's Gun
- HDU 5281 Senior's Gun
- hdu 5281 Senior's Gun(贪心)(思维)
- HDU 5281 Senior's Gun 杀怪
- HDU——5281 Senior's Gun
- HDU 5281 Senior's Gun——BestCoder Round #47(贪心)
- HDOJ5281 Senior's Gun(贪心思想)
- HDU 5281 BestCoder Round #47 1002:Senior's Gun
- Bestcoder #47 B Senior's Gun
- Senior's Gun-------(BestCoder Round #47)
- HDU 5280 Senior's Array
- hdu 5280 Senior's Array
- 141. Linked List Cycle
- 02-线性结构1 两个有序链表序列的合并
- 再看斜率优化打牌
- 总结
- git设置忽略的几种方法
- HDU 5281 Senior's Gun 贪心
- 从链表尾部开始打印
- POJ 3349:Snowflake Snow Snowflakes(Hash)
- ExpandableListView
- POJ刷题记录
- Java加密算法
- 类与对象
- python笔记: 经典类和新式类的区别
- das