rt.萌新第一次打CF,昨晚的CF连A也过不了,总是 WA on pretest 2,但是本地测样例和自己造的数据都是对的。总体思路就是枚举 b 中有几个数对 a 产生了影响且没有被其它的覆盖(设为 i 个), 那么用 a 的前 n−i 大和 b 的前 i 大之和更新答案,但是WA了。求hack/求调。
话说怎么样有效提升做CF题的能力啊。感觉思维难度好大而且和国内的OI题目不太一样。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int t,n,m;
const int maxn=110;
int a[maxn],b[maxn];
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=m;i++)scanf("%d",&b[i]);
sort(b+1,b+m+1);//尽量覆盖大的
sort(a+1,a+n+1);
reverse(b+1,b+m+1);//从大到小
reverse(a+1,a+n+1);
ll ans=0;
for(int i=1;i<=m;i++)//枚举作用几个
{
if(n<i)continue;
ll now=0;
for(int j=1;j<=i;j++)now+=b[j];
for(int j=1;j<=n-i;j++)now+=a[j];
ans=max(ans,now);
}
printf("%lld\n",ans);
}
return 0;
}