3 条题解
-
1
#include <bits/stdc++.h> using namespace std; int n,u[1145141],s[1145141]; vector<int> g[1145141]; long long ans[1145141]; int main(){ cin >> n; for(int i = 1 ; i <= n ; i++) cin >> u[i]; for(int i = 1 ; i <= n ; i++) cin >> s[i]; for(int i = 1 ; i <= n ; i++) g[u[i]].push_back(s[i]); for(int i = 1 ; i <= n ; i++) sort(g[i].rbegin(),g[i].rend()); for(int i = 1 ; i <= n ; i++){ if(g[i].empty()) continue; sort(g[i].begin(),g[i].end(),greater<int>()); int c = g[i].size(); vector<long long> pre(c+1,0); for(int j = 0 ; j < c ; j++) pre[j+1] = pre[j] + g[i][j]; for(int j = 1 ; j <= c ; j++){ int t = c / j; ans[j] += pre[t * j]; } } for(int i = 1 ; i <= n ; i++) printf("%lld%c",ans[i],i == n ? '\n' : ' '); return 0; }
信息
- ID
- 2342
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- 递交数
- 150
- 已通过
- 23
- 上传者