Codeforces 432 B. Football Kit

12 篇文章 0 订阅
9 篇文章 0 订阅

题目:http://codeforces.com/problemset/problem/432/B

题意:N个足球队要打比赛,每支队伍都要和其他N-1支队伍打两场,一场主场一场客场,每支队伍的衣服颜色都有分主场x和y,并且x!=y。原则上主场就穿主场颜色的衣服,客场就穿客场颜色的。但是如果一支队伍的是打客场,并且客场颜色刚好跟对方主场颜色一样,为了可以区分,这支客场的队伍需要穿他们主场的衣服。

问题就是要我们计算出,在所有比赛结束后,每个队伍的主场和客场衣服各穿了多少次。

首先,每支队伍都要打自己主场的比赛n-1次,所以他们主场颜色的衣服至少是N-1次,剩下的就是n-1次客场作战的比赛中,看他们客场衣服跟其他队主场的冲突次数了。由于颜色使用整数表示,并且不超过100000,所以我们可以直接开个100001大小的数组来统计每种主场颜色出现的次数,这样就可以知道每个队伍的客场跟别人的主场冲突的次数了,相应的客场衣服的次数也就能求出来了。

#include<cstdio>
#include<cstring>
#define N 100001
int n, i, a, b, x[N], y[N], f[N];
int main(){
    while(~scanf("%d", &n)){
        memset(f,0,sizeof(f));
        for(i=0; i<n; i++){
            scanf("%d %d", x+i, y+i);
            f[x[i]]++;
        }
        for(i=0; i<n; i++){
            a = n-1 + f[y[i]];
            b = n-1 - f[y[i]];
            printf("%d %d\n", a, b);
        }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值