暴力拍一遍就过了,
注意除以100 不能直接除,在结果除就行了。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<map>
#include<algorithm>
#include<vector>
#define ll long long
using namespace std;
ll gcd(ll a,ll b){
if(b==0) return a;
return gcd(b,a%b);
}
struct node{
int n,q=0;
double moy=0;
}a[11111];
int cmp(node a,node b){
if(a.moy==b.moy&&a.q==b.q) return a.n<b.n;
else if(a.moy==b.moy) return a.q>b.q;
return a.moy>b.moy;
}
int main(){
int n,m,x;
double y;
scanf("%d",&n);
for(int i=1;i<=n;++i)
a[i].n=i;
for(int i=1;i<=n;++i){
scanf("%d",&m);
for(int j=1;j<=m;++j){
scanf("%d %lf",&x,&y);
a[x].moy+=y;
a[x].q++;
a[i].moy-=y;
}
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;++i){
printf("%d %.2lf\n",a[i].n,a[i].moy/100);
}
return 0;
}