Educational Codeforces Round 108 (Rated for Div. 2)

害,C又失败了,就差这么几分钟,主要还是B蠢了,浪费时间。

A:https://codeforces.com/contest/1519/problem/A

把少的那个数尽可能分散到多的袋子里就行啦。

B:https://codeforces.com/contest/1519/problem/B

球球我自己了,好好读题,好好读题,好好读题。水题,到达终点的距离是确定的,害。

C:https://codeforces.com/contest/1519/problem/C

代码实现能力可能是负数来着,模拟题还码这么慢!不过以后切记,存地址别存长度,不然又tml了。

#include<algorithm>
#include<cstring>
#include<iostream>
#include<vector>
#include <stack>
#include<queue>
using namespace std;
#define pb push_back
const int N =2*1e5+10;
typedef pair<int,int> pii;
typedef unsigned long long ull;
int nu[N];
int po[N];
struct node
{
int x;
int y;
ull sum;
} a[N];
bool cmp(node a,node b)
{
if(a.x<b.x)
{
return true;
}
else
if(a.x==b.x)
{
if(a.y>b.y)
{
return true ;
}
}
return false ;
}
int main()
{
int t;
cin>>t;
while(t--)
{
a[0].sum=0;
int maxn=0;
memset(nu,0,sizeof nu);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].x;
int tmp=a[i].x;
nu[tmp]++;
if(nu[tmp]>maxn)maxn=nu[tmp];
}
for(int i=1;i<=n;i++)
{
cin>>a[i].y;
a[i].sum=a[i].y;
}
sort(a,a+n+1,cmp);
int num=0;int ii=1;
po[ii]=1;
for(int i=2;i<=n;i++)
{
if(a[i].x==a[i-1].x)a[i].sum=a[i-1].sum+a[i].y;
else po[++ii]=i;
}
int idx;
for(int i=1;i<=maxn;i++)
{
ull ans=0;
idx=0;
for(int j=1;j<=ii;j++)
{
int len=0;
if(j==ii) len=n-po[ii]+1;
else len=po[j+1]-po[j];
int x=(len/i)*i;
if(x)
{
ans+=a[po[j]+x-1].sum;
}
}
cout<<ans<<" ";
}
for(int i=maxn+1;i<=n;i++)cout<<"0 ";
cout<<endl;
}
return 0;
}

下次加油!A,B给我做快点!!!!!!!!!!!!

上一篇:Photoshop 模特暗调金色质感肤色


下一篇:flash cs5基础教程 时间轴的认识