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;
}


posted @ 2014-01-23 16:04  xlc2845  阅读(112)  评论(0)    收藏  举报