hdu 5281 Senior's Gun
2015-07-11 22:32
323 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5281
题目大意:学姐姐是一个酷酷的枪手。
她常常会随身携带n 把枪,每把枪有一个攻击力a[i] 。
有一天她遇到了m 只怪兽,每只怪兽有一个防御力b[j] 。现在她决定用手中的枪消灭这些怪兽。
学姐姐可以用第i 把枪消灭第j 只怪兽当且仅当b[j]≤a[i] ,同时她会获得a[i]−b[j] 的分数。
每把枪至多只能使用一次,怪兽死后也不会复活。现在学姐姐想知道她最多能得到多少分(她可以不用消灭所有的怪兽)。
解题思路:把a[i]从大到小排一下序,把b[i]从小到大排一下序,然后比较一下就行了
题目大意:学姐姐是一个酷酷的枪手。
她常常会随身携带n 把枪,每把枪有一个攻击力a[i] 。
有一天她遇到了m 只怪兽,每只怪兽有一个防御力b[j] 。现在她决定用手中的枪消灭这些怪兽。
学姐姐可以用第i 把枪消灭第j 只怪兽当且仅当b[j]≤a[i] ,同时她会获得a[i]−b[j] 的分数。
每把枪至多只能使用一次,怪兽死后也不会复活。现在学姐姐想知道她最多能得到多少分(她可以不用消灭所有的怪兽)。
解题思路:把a[i]从大到小排一下序,把b[i]从小到大排一下序,然后比较一下就行了
[code]#include <iostream> #include <algorithm> #include <cstdio> using namespace std; const int maxn=100000+5; typedef long long LL; LL a[maxn],b[maxn]; bool cmp(LL a, LL b) { return a>b; } int main() { int T; scanf("%d",&T); int m,n; while(T--) { scanf("%d%d",&m,&n); for(int i=0; i<m; i++) scanf("%lld",&a[i]); sort(a,a+m,cmp); for(int i=0; i<n; i++) scanf("%lld",&b[i]); sort(b,b+n); //int minn=n<m?n:m; int minn=min(m,n); LL sum=0; for(int i=0; i<minn; i++) { if(a[i]>=b[i]) sum+=a[i]-b[i]; else break; } printf("%lld\n",sum); } return 0; }
相关文章推荐
- 移植st官方usb-hid程序出现babble detected错误
- 看opengl写代码(3) 实现矩阵的旋转
- Linked List Cycle I II
- MVC框架
- JDBC入门
- 红黑树(3) - 删除操作
- leetcode100 Same Tree
- tinyhttpd学习笔记(一)编译错误及运行结果
- Linux 常用命令(2)
- 黑马程序员——高新技术---Java基础—常用类—Stirng类,StringBuffer类
- 异常分析
- R.java 文件的错误
- Java学习笔记
- yum命令安装mysql
- python3自带web服务器
- hdu 4495 - Rectangle(hash+二分+dp)
- 【 D3.js 入门系列 — 2.1 】 选择、插入、删除元素
- 【数据可视化】大规模多变量空间数据场可视化2
- leetoj Remove Duplicates from Sorted Array
- iOS中的事件处理