C. Berland Regional
作者:
Noe1017
,
2021-11-09 15:47:26
,
所有人可见
,
阅读 219
C. Berland Regional\
#include<bits/stdc++.h>
#pragma GCC optimize(2)
using namespace std;
typedef long long LL;
int main()
{
// freopen("test.in","r",stdin);
int t;cin>>t;
while(t--)
{
int n;
scanf("%d",&n);
vector<int>s(n),u(n);
for(int i=0;i<n;i++)
{
scanf("%d",&s[i]);
--s[i];
}
for(int i=0;i<n;i++)
{
scanf("%d",&u[i]);
}
vector<vector<int> >bst(n);
for(int i=0;i<n;i++)bst[s[i]].push_back(u[i]);
for(int i=0;i<n;i++)sort(bst[i].begin(),bst[i].end(),greater<int>());
vector<vector<LL> >pre(n,vector<LL>(1,0));
for(int i=0;i<n;++i)
for(int x : bst[i])pre[i].push_back(pre[i].back()+x);
vector<LL>ans(n);
for(int i=0;i<n;++i)
for(int k=1;k<=int(bst[i].size());++k)
{
ans[k-1]+=pre[i][bst[i].size()/k*k];
}
/*for(int i=0;i<n;i++)
for (int k = 1; k <= int(bst[i].size()); ++k)
{
ans[k - 1] += pre[i][bst[i].size() / k * k];
}*/
for(int i=0;i<n;++i)printf("%lld ",ans[i]);
puts("");
}
}