LOJ 6432 「PKUSC2018」真实排名——水题
题目:https://loj.ac/problem/6432
如果不选自己,设自己的值是 x ,需要让 “ a<x && 2*a>=x ” 的非 x 的值不被选;如果选自己,需要让 “ a>=x && 2*a<x ” 的非 x 的值被选。
注意是 “非 x ” 的值。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
int rdn()
{
int ret=;bool fx=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')fx=;ch=getchar();}
while(ch>=''&&ch<='')ret=ret*+ch-'',ch=getchar();
return fx?ret:-ret;
}
const int N=1e5+,mod=;
int upt(int x){while(x>=mod)x-=mod;while(x<)x+=mod;return x;}
int pw(int x,int k)
{int ret=;while(k){if(k&)ret=(ll)ret*x%mod;x=(ll)x*x%mod;k>>=;}return ret;} int n,k,a[N],b[N],jc[N],jcn[N];
bool cmp(int a,int b){return a>b;}
void init()
{
jc[]=;for(int i=;i<=n;i++)jc[i]=(ll)jc[i-]*i%mod;
jcn[n]=pw(jc[n],mod-);
for(int i=n-;i>=;i--)jcn[i]=(ll)jcn[i+]*(i+)%mod;
}
int C(int n,int m)
{
if(n<m)return ;
return (ll)jc[n]*jcn[m]%mod*jcn[n-m]%mod;
}
int cal(int x)//a<x&&2*a>=x
{
int l=,r=n,L=n+;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]>=x)l=mid+;
else if(*b[mid]<x)r=mid-;
else L=mid,r=mid-;
}
l=; r=n; int R=;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]>=x)l=mid+;
else if(*b[mid]<x)r=mid-;
else R=mid,l=mid+;
}
if(L<=R) return R-L+; return ;
}
int cal2(int x)//a>=x&&a<2*x
{
int l=,r=n,x2=*x,L=n+;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]<x)r=mid-;
else if(b[mid]>=x2)l=mid+;
else L=mid,r=mid-;
}
l=; r=n; int R=;
while(l<=r)
{
int mid=l+r>>;
if(b[mid]<x)r=mid-;
else if(b[mid]>=x2)l=mid+;
else R=mid,l=mid+;
}
if(x<x2)R--;//self
if(L<=R) return R-L+; return ;
}
int main()
{
n=rdn();k=rdn();
for(int i=;i<=n;i++)
a[i]=b[i]=rdn();
sort(b+,b+n+,cmp); init();
for(int i=;i<=n;i++)
{
int ct=cal(a[i]),ans=;
ans=C(n-ct-,k);
ct=cal2(a[i]);
if(ct<k)ans=upt(ans+C(n-ct-,k-ct-));
printf("%d\n",ans);
}
return ;
}
LOJ 6432 「PKUSC2018」真实排名——水题的更多相关文章
- LOJ #6432. 「PKUSC2018」真实排名(组合数)
题面 LOJ #6432. 「PKUSC2018」真实排名 注意排名的定义 , 分数不小于他的选手数量 !!! 题解 有点坑的细节题 ... 思路很简单 , 把每个数分两种情况讨论一下了 . 假设它为 ...
- Loj 6432. 「PKUSC2018」真实排名 (组合数)
题面 Loj 题解 枚举每一个点 分两种情况 翻倍or不翻倍 \(1.\)如果这个点\(i\)翻倍, 要保持排名不变,哪些必须翻倍,哪些可以翻倍? 必须翻倍: \(a[i] \leq a[x] < ...
- Loj#6432「PKUSC2018」真实排名(二分查找+组合数)
题面 Loj 题解 普通的暴力是直接枚举改或者不改,最后在判断最后对哪些点有贡献. 而这种方法是很难优化的.所以考虑在排序之后线性处理.首先先假设没有重复的元素 struct Node { int p ...
- LOJ #6432. 「PKUSC2018」真实排名
题目在这里...... 对于这道题,现场我写炸了......谁跟我说组合数O(n)的求是最快的?(~!@#¥¥%……& #include <cstdio> #include < ...
- 【LOJ】#6432. 「PKUSC2018」真实排名
题解 简单分析一下,如果这个选手成绩是0,直接输出\(\binom{n}{k}\) 如果这个选手的成绩没有被翻倍,那么找到大于等于它的数(除了它自己)有a个,翻倍后不大于它的数有b个,那么就从这\(a ...
- #6432. 「PKUSC2018」真实排名(组合数学)
题面 传送门 题解 这数据范围--这输出大小--这模数--太有迷惑性了-- 首先对于\(0\)来说,不管怎么选它们的排名都不会变,这个先特判掉 对于一个\(a_i\)来说,如果它不选,那么所有大于等于 ...
- 「PKUSC2018」真实排名(排列组合,数学)
前言 为什么随机跳题会跳到这种题目啊? Solution 我们发现可以把这个东西分情况讨论: 1.这个点没有加倍 这一段相同的可以看成一个点,然后后面的都可以. 这一段看成一个点,然后前面的不能对他造 ...
- 「PKUSC2018」真实排名(组合)
一道不错的组合数问题! 分两类讨论: 1.\(a_i\) 没有翻倍,那些 \(\geq a_i\) 和 \(a_j\times 2<a_i\) 的数就没有影响了.设 \(kth\) 为 \(a_ ...
- 「PKUSC2018」真实排名
题面 题解 因为操作为将一些数字翻倍, 所以对于一个数\(x\), 能影响它的排名的的只有满足\(2y\geq x\)或\(2x>y\)的\(y\) 将选手的成绩排序,然后考虑当前点的方案 1. ...
随机推荐
- 测开之路七十七:性能测试蓝图之js
//定义全局的editor = nullvar editor = null; //ace_editor的初始化函数function ace_editor() { var editor = ace.ed ...
- STM32 在串口通信时运用MODBUS协议
最近一个项目用到了MODBUS协议,就学习了一下,这里做一下记录以免后续忘记. 要用到MODBUS肯定要先知道是MOBUS协议,这里呢我们就又要先理解协议的含义了. 所谓的协议是什么?就是互相之间的约 ...
- Android深度探索-卷1第五章心得体会
S3C6410是由三星公司推出的一款低功耗.高性价比的RISC处理器,开发是,首先安装minicom串口调试工具: 第一步:检测当前系统是否支持USB转串口. Lsmod | grep usseria ...
- jvm 更多链接
http://www.cnblogs.com/dingyingsi/p/3760447.html : 讲解 jvm https://blog.csdn.net/Luomingkui1109/a ...
- Ubuntu安装byzanz截取动态效果图
byzanz-record主要参数选项 用法: byzanz-record [选项...] 录制您的当前桌面会话 帮助选项: -?, --help 显示帮助选项 --help-all 显示全部帮助选项 ...
- (转载)如何在 Github 上发现优秀的开源项目?
转载自:传送门 之前发过一系列有关 GitHub 的文章,有同学问了,GitHub 我大概了解了,Git 也差不多会使用了,但是还是搞不清 GitHub 如何帮助我的工作,怎么提升我的工作效率? 问到 ...
- vue里面如何让v-for循环出来的列表里面的列表click事件只对当前列表有效
<li @click="show"> <span>1</span> </li> <li @click="show&q ...
- vmware linux root密码破解
centOS: 1.开机过程按上下箭头键,让系统不要进入到引导程序中, 2.按 'e' 进入到编辑模式 3.找到linux16开始的首行,在末尾加入'rw init=/bin/sh' (会出现修改密码 ...
- jenkinsapi和python打包工具的安装日志
Successfully installed PyInstaller-3.3.1 altgraph-0.15 dis3-0.1.2 future-0.16.0 macholib-1.9 pefile- ...
- elasticsearch 深入 —— Top Hits Aggregation
Top Hits Aggregation top_hits指标聚合器跟踪正在聚合的最相关文档. 此聚合器旨在用作子聚合器,以便可以按桶聚合最匹配的文档. top_hits聚合器可以有效地用于通过桶聚合 ...