标签:
1 2 2 2 3 2 2
1
题意:
有n把枪,m只怪物,每把抢都有一个能量值,每个怪物都有一个耗能值,现在用n把枪去打怪物,每把枪只能用一次,怪物只能打一次,用每i把枪打第j只怪物得到能量值为a[i]-b[j],前提a[i]>=b[j],枪可以不用完,怪物也可以不打完,问最多能得多少的能量值。
解题:枚举用k把枪去打k只怪物,那么每把枪都是最大能量值,每只怪物都是耗能最少的。
<pre name="code" class="cpp">#include<stdio.h>
#include<algorithm>
using namespace std;
const int N = 100005;
bool cmp(int a,int b){
return a>b;
}
__int64 ans,a[N],b[N];
int main()
{
int T,n,m;
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
for(int i=0; i<n; i++)
scanf("%I64d",&a[i]);
for(int i=0; i<m; i++)
scanf("%I64d",&b[i]);
sort(a,a+n,cmp);
sort(b,b+m);
int k=0;
ans=-(1<<29);
while(k<n&&k<m){
if(k!=0){
a[k]+=a[k-1];
b[k]+=b[k-1];
}
if(ans<a[k]-b[k])
ans=a[k]-b[k];
k++;
}
printf("%I64d\n",ans);
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/u010372095/article/details/46853179