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]);
}
}

最新文章

  1. wampserver解决“不能切换在线”及运行“404问题”
  2. 与你相遇好幸运,Sailsjs查询
  3. OAuth in One Picture
  4. UML系列04之 UML时序图
  5. 京东商城发现了一枚Bug
  6. php中json_decode()和json_encode()
  7. CSS样式表初始化代码
  8. char s[]字串和char *s字串有什麼区别?
  9. Python超级明星WEB框架Flask
  10. @Autowired注解在抽象类中实效的原因分析
  11. shell的变量处理
  12. ios 给微信开发一个插件并安装到未越狱的手机上教程
  13. Python字符串格式化--format()方法
  14. laravel基于redis实现的一个简单的秒杀系统
  15. 怎样把linux客户端用户禁止用 su命令来切换用户
  16. 数据可视化Echarts-实例
  17. centos6.7环境半虚拟化软件xen及xm配置工具使用详解
  18. 2.0 vue内置指令与自定义指令
  19. 一分钟了解Android横竖屏 mdpi hdpi xhdpi xxhdpi xxxhdpi (转)
  20. js中函数的参数传递

热门文章

  1. python中map函数的用法
  2. 解决 php Call to undefined function shm_attach()
  3. CSS3——过渡
  4. 阿里云应用上边缘云解决方案助力互联网All in Cloud
  5. XAMPP的安装及使用教程
  6. day 51 阿里iconfont的使用
  7. PHP面向对象之继承的基本思想
  8. Python flask 构建微电影视频网站✍✍✍
  9. Traveling by Stagecoach /// 状压DP oj22914
  10. 倍增(在线)求LCA