zoukankan      html  css  js  c++  java
  • CodeForces 489B BerSU Ball (贪心)

    BerSU Ball

    题目链接:

    http://acm.hust.edu.cn/vjudge/contest/121332#problem/E

    Description

    The Berland State University is hosting a ballroom dance in celebration of its 100500-th anniversary! n boys and m girls are already busy rehearsing waltz, minuet, polonaise and quadrille moves.

    We know that several boy&girl pairs are going to be invited to the ball. However, the partners' dancing skill in each pair must differ by at most one.

    For each boy, we know his dancing skills. Similarly, for each girl we know her dancing skills. Write a code that can determine the largest possible number of pairs that can be formed from n boys and m girls.

    Input

    The first line contains an integer n (1 ≤ n ≤ 100) — the number of boys. The second line contains sequence a1, a2, ..., an (1 ≤ ai ≤ 100), where ai is the i-th boy's dancing skill.

    Similarly, the third line contains an integer m (1 ≤ m ≤ 100) — the number of girls. The fourth line contains sequence b1, b2, ..., bm (1 ≤ bj ≤ 100), where bj is the j-th girl's dancing skill.

    Output

    Print a single number — the required maximum possible number of pairs.

    Sample Input

    Input
    4
    1 4 6 2
    5
    5 1 5 7 9
    Output
    3
    Input
    4
    1 2 3 4
    4
    10 11 12 13
    Output
    0
    Input
    5
    1 1 1 1 1
    3
    1 2 3
    Output
    2

    题意:

    n个男孩,m个女孩;每人各有一个权值;
    求最多能组成多少对男女,使得两人权值差不超过1.

    题解:

    排序后扫描一遍后就可以了,本质是贪心.

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <queue>
    #include <map>
    #include <set>
    #include <vector>
    #define LL long long
    #define eps 1e-8
    #define maxn 150
    #define inf 0x3f3f3f3f
    #define IN freopen("in.txt","r",stdin);
    using namespace std;
    
    int n,m;
    int a[maxn], b[maxn];
    
    int main(int argc, char const *argv[])
    {
        //IN;
    
        while(scanf("%d", &n) != EOF)
        {
            for(int i=1; i<=n; i++)
                scanf("%d", &a[i]);
            cin >> m;
            for(int i=1; i<=m; i++)
                scanf("%d", &b[i]);
            sort(a+1,a+1+n);
            sort(b+1,b+1+m);
    
            int i=1, j=1;
            int ans = 0;
            while(i<=n && j<=m) {
                if(abs(a[i]-b[j])<=1) {
                    ans++;
                    i++; j++;
                    continue;
                }
                if(a[i] > b[j]) j++;
                else if(a[i] < b[j]) i++;
            }
    
            printf("%d
    ", ans);
        }
    
        return 0;
    }
    
    
  • 相关阅读:
    一些Cassandra+YCSB异常
    memcached使用
    YCSB报": No such file or directory"异常
    dynamo与cassandra区别
    XT535
    北京地区护照办理流程
    一些iptables配置
    debian6保存iptables规则
    pdf转eps后存在大片空白的处理
    sql server 2008 数据库可疑的解决步骤
  • 原文地址:https://www.cnblogs.com/Sunshine-tcf/p/5697178.html
Copyright © 2011-2022 走看看