我是靠谱客的博主 丰富天空,最近开发中收集的这篇文章主要介绍2019-2020 ICPC Northwestern European Regional Programming Contest (NWERC 2019) A,EE - Expeditious CubingA - Average Rank,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

E - Expeditious Cubing

题解:
如果有浮点型可能会损失精度,这里说了给出的都是两位小数,所以我们直接把所有小数整体向右移动把他们变成整形,然后推式子的时候先从两个边界推,然后再推一般情况会好写一些。

#include <bits/stdc++.h>
//#define int long long
const int N=4e5+7;
using namespace std;
int a[10];
int main()
{
for(int i=0;i<4;i++){
int x,y;
scanf("%d.%d",&x,&y);
x*=100;
a[i]=x+y;
}
sort(a,a+4);
int x,y; scanf("%d.%d",&x,&y);
int k=x*100+y;
if(k*3>=a[1]+a[2]+a[3]) puts("infinite");
else if(k*3<a[0]+a[1]+a[2]) puts("impossible");
else{
int tmp=k*3-a[1]-a[2];
printf("%d.",tmp/100);
tmp=tmp%100;
if(tmp<10) printf("0%d",tmp);
else printf("%d",tmp);
puts("");
}
}

A - Average Rank

题解:
这道题利用几何意义来进行解决。
平均排名等于w周的排名的和除以w,考虑如果求每个人的排名的和一开始如果每个人的分数都不变,和为n考虑如果某个人分数在第t周从x变到x+1,如何维护这个和,或者说有什么影响一个是分数为x的其他人,他们在这个时刻开始排名+1,每个人排名的和变化(m-t+1)另一个是这个人自己的排名,减少了numx+1其他人没有变化
自己的很好维护,分数为x的那部分打标记维护一下就好了。

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+7;
int main()
{
int n,m; cin>>n>>m;
vector<double> ans(n,m);
vector<long long>f(m+1,0),g(n,0),point(n,0),num(m+1,0);
num[0]=n;
for(int i=1;i<=m;i++){
int t;
cin>>t;
for(int j=1;j<=t;j++){
int x;
cin>>x;
x--;
ans[x]+=f[point[x]]-g[x];
f[point[x]]+=(m-i+1);
num[point[x]]--;
point[x]++;
ans[x]-=num[point[x]]*(m-i+1);
g[x]=f[point[x]];
num[point[x]]++;
}
}
//
cout<<"-----"<<endl;
for(int i=0;i<n;i++) ans[i]+=f[point[i]]-g[i];
for(int i=0;i<n;i++) printf("%.10lfn",ans[i]/(1.0*m));
}

最后

以上就是丰富天空为你收集整理的2019-2020 ICPC Northwestern European Regional Programming Contest (NWERC 2019) A,EE - Expeditious CubingA - Average Rank的全部内容,希望文章能够帮你解决2019-2020 ICPC Northwestern European Regional Programming Contest (NWERC 2019) A,EE - Expeditious CubingA - Average Rank所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部