1 条题解
-
0
死因:求答案是 的(
//t3 rp++ #include<bits/stdc++.h> #define int long long using namespace std; const int N=2e5+10; bool f[N]; int n,cnt,xsum,sch[N]; vector<int>vc[N],s[N]; struct Student{int a,b;}a[N]; bool cmp(Student x,Student y) { return x.a>y.a; } int Max(int a,int b) { return (a>b?a:b); } signed main() { scanf("%lld",&n); for(int i=1;i<=n;++i) { scanf("%lld",&a[i].b); if(f[a[i].b]==0) { f[a[i].b]=1; sch[++cnt]=a[i].b; } } for(int i=1;i<=n;++i) { scanf("%lld",&a[i].a); } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;++i) { vc[a[i].b].push_back(a[i].a); } for(int i=1;i<=n;++i) { for(int j=0;j<vc[i].size();++j) { if(j>0)s[i].push_back(s[i][j-1]+vc[i][j]); else s[i].push_back(vc[i][j]); } xsum=Max(xsum,vc[i].size()); } for(int i=1;i<=n;++i) { if(i>xsum) { printf("0 "); continue; } int ans=0; for(int j=1;j<=cnt;++j)//attend { int id=sch[j]; int sz=vc[id].size(); if(sz-sz%i-1>=0) { ans+=s[id][sz-sz%i-1]; } } printf("%lld ",ans); } return 0; }
- 1
信息
- ID
- 2342
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 137
- 已通过
- 16
- 上传者