PKUWC 2018 真实排名
PKUWC2018 真实排名
题面描述
共有\(n\)个人,每个人有一个能力值,每个人的排名为所有能力值不比他小的人的个数(包括他自己)。
现在有\(k\)个人能力值翻倍,但我们无法得知是哪\(k\)个人
问每个人有多少种情况排名不变。
思路
把所有人按照能力值从小到大排序。
分类讨论一下:此人是否翻倍。
若此人翻倍,则他后面有一段的人也要跟着翻倍,否则就会被他超过
若此人不翻倍,则他前面有一段的人也不能翻倍,否则就会超过他
另外特判一下\(0\)的情况即可
代码
#include<bits/stdc++.h>
using namespace std;
const int sz=1e5+7;
const int mod=998244353;
int L,R;
int n,m,k;
int ans[sz];
int sum[sz];
int l[sz],r[sz];
int a[sz],b[sz];
int c[sz],cnt[sz];
int inv[sz],fac[sz],ifac[sz];
void init(){
fac[0]=ifac[0]=1;
fac[1]=ifac[1]=inv[1]=1;
for(int i=2;i<sz;i++){
inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
fac[i]=1ll*i*fac[i-1]%mod;
ifac[i]=1ll*inv[i]*ifac[i-1]%mod;
}
}
int C(int n,int m){
if(n<m) return 0;
if(n<0||m<0) return 0;
return 1ll*fac[n]*ifac[m]%mod*ifac[n-m]%mod;
}
int main(){
init();
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]),b[i]=a[i];
sort(b+1,b+n+1);
b[0]=c[0]=-1;
for(int i=1;i<=n;i++){
if(b[i]!=b[i-1]) c[++m]=b[i];
++cnt[m];
}
L=0,R=0;
c[m+1]=INT_MAX;
for(int i=1;i<=m;i++)
sum[i]=sum[i-1]+cnt[i];
for(int i=1;i<=m;i++){
while(2*c[L]<c[i]) L++;
while(2*c[i]>c[R+1]) R++;
l[i]=L,r[i]=R;
}
if(c[1]==0) ans[1]=C(n,k);
for(int i=(c[1]==0)+1;i<=m;i++){
ans[i]=(ans[i]+C(n-(sum[i-1]-sum[l[i]-1]+1),k))%mod;
ans[i]=(ans[i]+C(n-(sum[r[i]]-sum[i-1]),k-(sum[r[i]]-sum[i-1])))%mod;
}
for(int i=1;i<=n;i++){
int num=lower_bound(c+1,c+m+1,a[i])-c;
printf("%d\n",ans[num]);
}
}
PKUWC 2018 真实排名的更多相关文章
- [LOJ 6432][PKUSC 2018]真实排名
[LOJ 6432][PKUSC 2018]真实排名 题意 给定 \(n\) 个选手的成绩, 选中其中 \(k\) 个使他们的成绩翻倍. 对于每个选手回答有多少种方案使得他的排名不发生变化. \(n\ ...
- PKUWC 2018游记
PKUWC 2018游记 标签: Day\([-inf,0)\) 停课之后一直各种浪的飞起,考试rank20+,不搞颓但是学习很没有状态.还经常带着耳机被谢总抓了好几次,然后被拉过去谈话了好几次... ...
- A Dream (PKUWC 2018)
A Dream (PKUWC 2018) 这是一个梦. 从没有几分节日气氛的圣诞,做到了大雪纷飞的数九寒天. 忘了罢! 不记得时间,不记得地点.随着记忆的褪去,一切也只会不复存在. Day-34? D ...
- $PkuWc\ 2018$ 酱油记
PkuWc 2018 酱油记 1. Day -INF 又停了一个月课...... 感觉这个月的收获还是蛮大的,刚来的时候还只会线段树,到现在LCT都学了... 这个月不停在考试,自己考试技巧也提升了不 ...
- LOJ #2542. 「PKUWC 2018」随机游走(最值反演 + 树上期望dp + FMT)
写在这道题前面 : 网上的一些题解都不讲那个系数是怎么推得真的不良心 TAT (不是每个人都有那么厉害啊 , 我好菜啊) 而且 LOJ 过的代码千篇一律 ... 那个系数根本看不出来是什么啊 TAT ...
- LOJ #6432. 「PKUSC2018」真实排名(组合数)
题面 LOJ #6432. 「PKUSC2018」真实排名 注意排名的定义 , 分数不小于他的选手数量 !!! 题解 有点坑的细节题 ... 思路很简单 , 把每个数分两种情况讨论一下了 . 假设它为 ...
- LOJ #2541. 「PKUWC 2018」猎人杀(容斥 , 期望dp , NTT优化)
题意 LOJ #2541. 「PKUWC 2018」猎人杀 题解 一道及其巧妙的题 , 参考了一下这位大佬的博客 ... 令 \(\displaystyle A = \sum_{i=1}^{n} w_ ...
- LOJ #2540. 「PKUWC 2018」随机算法(概率dp)
题意 LOJ #2540. 「PKUWC 2018」随机算法 题解 朴素的就是 \(O(n3^n)\) dp 写了一下有 \(50pts\) ... 大概就是每个点有三个状态 , 考虑了但不在独立集中 ...
- LOJ #2538. 「PKUWC 2018」Slay the Spire (期望dp)
Update on 1.5 学了 zhou888 的写法,真是又短又快. 并且空间是 \(O(n)\) 的,速度十分优秀. 题意 LOJ #2538. 「PKUWC 2018」Slay the Spi ...
随机推荐
- python 使用字符串
字符串方法 string.digits:包含数字0-9的字符串 string.letters:包含所有字母(大写或小写)的字符串 string.lowercase:包含所有小写字母的字符串 strin ...
- agc38C LCMs
https://atcoder.jp/contests/agc038/tasks/agc038_c 题意:给\(a_i\),求\(\sum_{i=1}^n\sum_{j=i+1}^nlcm(a_i,a ...
- Android Scroller简单用法 --View滚动
转:http://ipjmc.iteye.com/blog/1615828 Android里Scroller类是为了实现View平滑滚动的一个Helper类.通常在自定义的View时使用,在View中 ...
- LightOJ-1234-Harmonic Number-调和级数+欧拉常数 / 直接打表
In mathematics, the nth harmonic number is the sum of the reciprocals of the first n natural numbers ...
- PAT甲级——A1125 Chain the Ropes【25】
Given some segments of rope, you are supposed to chain them into one rope. Each time you may only fo ...
- 《DSP using MATLAB》Problem 8.39
代码: %% ------------------------------------------------------------------------ %% Output Info about ...
- 第一篇:spring+springMVC项目启动最终笔记(一web.xml)
1.web应用启动从web.xml开始,首先创建一个全局的上下文(Context),名字叫ServletContext,可以理解为一间图书馆,或一个数据结构(如map,但是比map牛多了),整个结构类 ...
- linq to sql any和all的区别
Any说明:用于判断集合中是否有元素满足某一条件:不延迟.(若条件为空,则集合只要不为空就返回True,否则为False).1.简单形式:仅返回没有订单的客户:var q =from c in db. ...
- 收藏的链接-Git
git远程删除分支后,本地git branch -a 依然能看到的解决办法. - qq_763034592的博客 - CSDN博客 https://blog.csdn.net/qq_16885135/ ...
- c# Data = select new{} 返回值的显示