https://www.luogu.org/problem/show?pid=2813
90分程序,TLE第一个点
把两个数组从小到大排序,然后尽量用我方较为小的系统去打敌人较大的系统
#include<cstdio>
#include<algorithm>
#include<cstring>
#define ms(i,j) memset(i,j, sizeof i);
/* NOIP2016倒计时,RP++
Luogu: P2813 母舰
*/
using namespace std;
int m,n;
int a[100005];//敌
int b[100005];//我
int main()
{
scanf("%d%d", &m, &n);
for (int i=1;i<=m;i++) scanf("%d", &a[i]);
for (int i=1;i<=n;i++) scanf("%d", &b[i]);
sort(a+1, a+1+m); sort(b+1, b+1+n);
int i=m,j=1;
while (i>0)
{
if (b[j]>a[i])
{
b[j] = 0; i--; j=1;
} else j++;
if (j>n) {printf("0\n");return 0;}
}
int ans = 0;
for (int k=1;k<=n;k++)
{
ans += b[k];
}
printf("%d\n", ans);
return 0;
}