spoj 247

时间:2023-03-10 03:06:11
spoj 247

不管行列   总是先切割切割费用大的  代码比较烂 ......

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
bool cmp(int a, int b)
{
return a > b;
}
int a[1010],b[1010];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int m,n;
scanf("%d%d",&m,&n);
for(int i = 0; i < m-1; i++)
{
scanf("%d",&a[i]);
}
for(int i = 0; i < n-1; i++)
{
scanf("%d",&b[i]);
}
sort(a, a+m-1, cmp);
sort(b, b+n-1, cmp);
int sum = 0;
int p,q;
p = q = 0;
while(p != m-1 || q != n-1)
{
if(p != m-1 && q != n-1 && a[p] >= b[q])
{
sum += a[p];
for(int j = q; j < n-1; j++)
{
sum += b[j];
}
p++;
}
else if(p != m-1 && q != n-1 && a[p] < b[q])
{
sum += b[q];
for(int j = p; j < m-1; j++)
{
sum += a[j];
}
q++;
}
else if(p == m-1)
{
for(int j = q; j < n-1; j++)
{
sum += b[j];
}
q = n-1;
}
else
{
for(int j = p; j < m-1; j++)
{
sum += a[j];
}
p = m-1;
}
}
printf("%d\n",sum);
}
return 0;
}