http://codeforces.com/contest/432/problem/B
【题目大意】
N个足球队要打比赛,每支队伍都要和其他N-1支队伍打两场,一场主场一场客场,每支队伍的衣服颜色都有分主场x和y,并且x!=y。原则上主场就穿主场颜色的衣服,客场就穿客场颜色的。但是如果一支队伍的是打客场,并且客场颜色刚好跟对方主场颜色一样,为了可以区分,这支客场的队伍需要穿他们主场的衣服。
问题就是要我们计算出,在所有比赛结束后,每个队伍的主场和客场衣服各穿了多少次。
【题目分析】
首先,每支队伍都要打自己主场的比赛n-1次,所以他们主场颜色的衣服至少是N-1次,剩下的就是n-1次客场作战的比赛中,看他们客场衣服跟其他队主场的冲突次数了。由于颜色使用整数表示,并且不超过100000,所以我们可以直接开个100001大小的数组来统计每种主场颜色出现的次数,这样就可以知道每个队伍的客场跟别人的主场冲突的次数了,相应的客场衣服的次数也就能求出来了。
#include<cstdio> #include<cstring> #include<iostream> #include<bits/stdc++.h> #define MAX 100005 using namespace std; int x[MAX]; int y[MAX]; int f[MAX]; int main() { int n; cin>>n; for(int i=0;i<n;i++) { scanf("%d%d",&x[i],&y[i]); f[x[i]]++; } int a,b; for(int i=0;i<n;i++) { a=n-1+f[y[i]]; b=n-1-f[y[i]]; cout<<a<<" "<<b<<endl; } return 0; }