标签:
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