LOJ6432 [PKUSC2018] 真实排名 【组合数】
题目分析:
做三个指针然后预处理阶乘就行。
题目代码:
#include<bits/stdc++.h>
using namespace std; const int maxn = ; const int mod = ; int n,k;
struct node{
int data,num;
}a[maxn]; int ans[maxn]; int fac[maxn],inv[maxn]; int fast_pow(int now,int pw){
if(pw == )return now;
int z = fast_pow(now,pw/);
z = (1ll*z*z)%mod;
if(pw & ) z = (1ll*z*now)%mod;
return z;
} void init(){
fac[] = ;
for(int i=;i<=n;i++) fac[i] = (1ll*fac[i-]*i) %mod;
inv[n] = fast_pow(fac[n],mod-);
for(int i=n;i>=;i--){
inv[i-] = (1ll*inv[i]*i)%mod;
}
} int C(int alpha,int beta){
if(beta > alpha) return ;
return (((1ll*fac[alpha]*inv[beta])%mod)*(inv[alpha-beta]))%mod;
} int cmp(node alpha,node beta){return alpha.data > beta.data;} void read(){
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) {
scanf("%d",&a[i].data),a[i].num = i;
}
sort(a+,a+n+,cmp);
} void work(){
init();
int pts = ,ok = ;
while(pts <= n && a[pts].data* >= a[].data) pts++;
for(int i=;i<=n;i++){
int nxt = i; while(nxt+<=n && a[nxt+].data == a[i].data) nxt++;
while(pts <= n && a[pts].data* >= a[i].data) pts++;
int forw = n-(pts-nxt),res = C(forw,k);
for(int j=i;j<=nxt;j++) ans[a[j].num] += res;
while(ok <= nxt && a[ok].data >= a[nxt].data*) ok++;
int newm = k-(nxt-ok+);
if(newm >= ){
forw = n-(nxt-ok+),res = C(forw,newm);
for(int j=i;j<=nxt;j++) ans[a[j].num] += res,ans[a[j].num] %= mod;
}
i = nxt;
}
for(int i=;i<=n;i++) if(a[i].data == ) ans[a[i].num] = C(n,k);
for(int i=;i<=n;i++) printf("%d\n",ans[i]);
} int main(){
read();
work();
return ;
}
LOJ6432 [PKUSC2018] 真实排名 【组合数】的更多相关文章
- [LOJ6432] [PKUSC2018] 真实排名
题目链接 LOJ:https://loj.ac/problem/6432 Solution 假设我们当前要算\(x\)的答案,分两种情况讨论: \(x\)没被翻倍,那么\([a_x/2,a_x]\)这 ...
- BZOJ_5368_[Pkusc2018]真实排名_组合数
BZOJ_5368_[Pkusc2018]真实排名_组合数 Description 小C是某知名比赛的组织者,该比赛一共有n名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排名是:成绩不小于他 ...
- [PKUSC2018]真实排名——线段树+组合数
题目链接: [PKUSC2018]真实排名 对于每个数$val$分两种情况讨论: 1.当$val$不翻倍时,那么可以翻倍的是权值比$\frac{val-1}{2}$小的和大于等于$val$的. 2.当 ...
- 【LOJ4632】[PKUSC2018]真实排名
[LOJ4632][PKUSC2018]真实排名 题面 终于有题面啦!!! 题目描述 小 C 是某知名比赛的组织者,该比赛一共有 \(n\) 名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排 ...
- [PKUSC2018]真实排名
[PKUSC2018]真实排名 题目大意: 有\(n(n\le10^5)\)个人,每个人有一个成绩\(A_i(0\le A_i\le10^9)\).定义一个人的排名为\(n\)个人中成绩不小于他的总人 ...
- LOJ #6432. 「PKUSC2018」真实排名(组合数)
题面 LOJ #6432. 「PKUSC2018」真实排名 注意排名的定义 , 分数不小于他的选手数量 !!! 题解 有点坑的细节题 ... 思路很简单 , 把每个数分两种情况讨论一下了 . 假设它为 ...
- bzoj5368 [Pkusc2018]真实排名
题目描述: bz luogu 题解: 组合数计数问题. 首先注意排名指的是成绩不小于他的选手的数量(包括他自己). 考虑怎么增大才能改变排名. 小学生都知道,对于成绩为$x$的人,让他自己不动并让$\ ...
- BZOJ5368:[PKUSC2018]真实排名(组合数学)
Description 小C是某知名比赛的组织者,该比赛一共有n名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排名是:成绩不小于他的选手的数量(包括他自己). 例如如果333位选手的成绩分别 ...
- bzoj 5368: [Pkusc2018]真实排名
Description 小C是某知名比赛的组织者,该比赛一共有n名选手参加,每个选手的成绩是一个非负整数,定义一个选手的排名是 :成绩不小于他的选手的数量(包括他自己).例如如果3位选手的成绩分别是[ ...
随机推荐
- 避免使用HttpClient的系统代理
这两天在玩Consul, 他的.Net驱动使用了HttpClient来发送Http请求. 但是我的电脑上装有SS, 所以请求会被SS过滤一次, 然后导致请求的延迟一直比较高. 然后只需要改写一下Htt ...
- zabbix安装与配置
一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...
- Python-sys模块-61
sys 模块:和Python解释器打交道的模块 sys模块是与python解释器交互的一个接口 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退 ...
- HDU - 1255 扫描线+离散化进阶
这道题最开始我以为和HDU - 1542 那道题一样,只需要把cover次数改成2次即可,但是后面仔细一想,我们需要求的是覆盖次数大于等于2次的,这样的话,我们需要维护两个长度,HDU-1542 由于 ...
- 团队作业5——测试与发布(alpha阶段)
Deadline: 2018-5-9 10:00PM,以提交至班级博客时间为准. 根据以下要求,完成对本团队项目的测试与发布. 测试 请根据团队项目中软件的需求文档.功能说明.系统设计和测试计划,写出 ...
- jenkins 迁移后 提示 反向代理设置有误
jenkins报:反向代理设置有误-布布扣-bubuko.comhttp://www.bubuko.com/infodetail-2038758.html [Linux][Jenkins]系统配置报反 ...
- 容错处理try
var num = 90; try{ console.log( num + 100 ); consolel.log(aaa); }catch(e){ console.log("如果程序中有异 ...
- springboot 整合spark-sql报错
Exception in thread "main" org.spark_project.guava.util.concurrent.ExecutionError: java.la ...
- Vue+iview实现添加删除类
<style> .tab-warp{ border-bottom: solid 1px #e0e0e0; overflow: hidden; margin-top: 30px; posit ...
- [转帖]Stack的三种含义
Stack的三种含义 http://www.ruanyifeng.com/blog/2013/11/stack.html 学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈&q ...