uva 434
贪心 ~
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <vector>
#include <sstream>
#include <string>
#include <cstring>
#include <algorithm>
#include <iostream>
#define maxn 110
#define INF 0x7fffffff
#define inf 10000000
#define MOD 1000000007
#define ull unsigned long long
#define ll long long
using namespace std;
int fr[maxn], ri[maxn], n, _min, _max;
bool vis[2][maxn];
void solve()
{
_min = _max = 0;
memset(vis, 0, sizeof(vis));
for(int i = 0; i < n; ++ i)
for(int j = 0; j < n; ++ j)
{
if(fr[i] == ri[j] && !vis[0][i] && !vis[1][j])
{
_min += fr[i];
vis[0][i] = vis[1][j] = 1;
}
_max += min(fr[i], ri[j]);
}
for(int i = 0; i < n; ++ i)
{
if(!vis[0][i]) _min += fr[i];
if(!vis[1][i]) _min += ri[i];
}
}
int main()
{
int t;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
for(int i = 0; i < n; ++ i) scanf("%d", &fr[i]);
for(int i = 0; i < n; ++ i) scanf("%d", &ri[i]);
solve();
printf("Matty needs at least %d blocks, and can add at most %d extra blocks.\n", _min, _max-_min);
}
return 0;
}

浙公网安备 33010602011771号