题目在这里......

对于这道题,现场我写炸了......谁跟我说组合数O(n)的求是最快的?(~!@#¥¥%……&

#include <cstdio>
#include <algorithm>
using namespace std;

typedef long long ll;
;
;

ll ksm(ll x, ll n) {
    ll ans = 1ll; //printf("%lld ", x);
    while( n) {
        ) ans = ans * x % mod; x = x * x % mod;
        n >>= ;
    }
//    printf("ans = %lld, %lld\n", ans, x);
    return ans;
}
ll zt[N];
ll lucas(int m, int n) {
    ll x = zt[m] * zt[n-m] % mod; //printf("%lld\n", ksm(x, mod-2));
    ) % mod;
}
int data[N], a[N], n, k;
ll query1(int x) {
    , data++n, a[x]) - data;
    , data++n, (a[x] +  >> ) - ) - data - ;
    if( l + n - r < k) return 0ll;
    return lucas(k, l + n - r);
}

ll query2(int x) {
    , data++n, a[x]) - data;
    , data++n, a[x] << ) - data;
    if( l == r) r ++;
    if( r - l > k) return 0ll;
    return lucas(k-r+l, l + n - r);
}

int main() {
    zt[] = zt[] = 1ll;
    ; i <= N-; i ++) zt[i] = zt[i-] * i % mod;
//    for( int i = 1; i <= 10; i ++) printf("%d ", zt[i]); puts("");
    scanf("%d%d", &n, &k);
    ; i <= n; i ++) scanf("%d", a+i), data[i] = a[i];
    sort(data+, data++n);
    ; i <= n; i ++)
        printf("%lld\n", (query1(i) + query2(i)) % mod);
}

我们先复制一份排个序

我们考虑2种情况:

  1:当前节点不变的情况,则大于他的节点和小于他的一半的节点都可以改变(显然),注意一下0,然后我们可以求得可以改变的数的个数t1。

  2:当前节点要改变,那么想要维持他的排名不变,那么大于等于他且小于他的2倍的数都要改变(显然),然后我们可以求得可以改变的数t2。

然后就是求组合数(心态炸了QAQ)......

预处理一下,然后因为mod为质数,所以可以用费马小定理在log的时间内求得逆元......

每次logN的求t1, t2,。logmod的时间求逆元,所以复杂度是O(nlogn+logmod)。

费马小定理 : a^(p-1) % p == 1 (p为质数);

组合数 : 

(当时我脑抽用这个公式每次O(n)的求组合数只有45分QAQ,应该预处理阶乘)


LOJ #6432. 「PKUSC2018」真实排名的更多相关文章

  1. LOJ #6432. 「PKUSC2018」真实排名(组合数)

    题面 LOJ #6432. 「PKUSC2018」真实排名 注意排名的定义 , 分数不小于他的选手数量 !!! 题解 有点坑的细节题 ... 思路很简单 , 把每个数分两种情况讨论一下了 . 假设它为 ...

  2. Loj 6432. 「PKUSC2018」真实排名 (组合数)

    题面 Loj 题解 枚举每一个点 分两种情况 翻倍or不翻倍 \(1.\)如果这个点\(i\)翻倍, 要保持排名不变,哪些必须翻倍,哪些可以翻倍? 必须翻倍: \(a[i] \leq a[x] < ...

  3. LOJ 6432 「PKUSC2018」真实排名——水题

    题目:https://loj.ac/problem/6432 如果不选自己,设自己的值是 x ,需要让 “ a<x && 2*a>=x ” 的非 x 的值不被选:如果选自己 ...

  4. Loj#6432「PKUSC2018」真实排名(二分查找+组合数)

    题面 Loj 题解 普通的暴力是直接枚举改或者不改,最后在判断最后对哪些点有贡献. 而这种方法是很难优化的.所以考虑在排序之后线性处理.首先先假设没有重复的元素 struct Node { int p ...

  5. 【LOJ】#6432. 「PKUSC2018」真实排名

    题解 简单分析一下,如果这个选手成绩是0,直接输出\(\binom{n}{k}\) 如果这个选手的成绩没有被翻倍,那么找到大于等于它的数(除了它自己)有a个,翻倍后不大于它的数有b个,那么就从这\(a ...

  6. #6432. 「PKUSC2018」真实排名(组合数学)

    题面 传送门 题解 这数据范围--这输出大小--这模数--太有迷惑性了-- 首先对于\(0\)来说,不管怎么选它们的排名都不会变,这个先特判掉 对于一个\(a_i\)来说,如果它不选,那么所有大于等于 ...

  7. 「PKUSC2018」真实排名(排列组合,数学)

    前言 为什么随机跳题会跳到这种题目啊? Solution 我们发现可以把这个东西分情况讨论: 1.这个点没有加倍 这一段相同的可以看成一个点,然后后面的都可以. 这一段看成一个点,然后前面的不能对他造 ...

  8. 「PKUSC2018」真实排名(组合)

    一道不错的组合数问题! 分两类讨论: 1.\(a_i\) 没有翻倍,那些 \(\geq a_i\) 和 \(a_j\times 2<a_i\) 的数就没有影响了.设 \(kth\) 为 \(a_ ...

  9. 「PKUSC2018」真实排名

    题面 题解 因为操作为将一些数字翻倍, 所以对于一个数\(x\), 能影响它的排名的的只有满足\(2y\geq x\)或\(2x>y\)的\(y\) 将选手的成绩排序,然后考虑当前点的方案 1. ...

随机推荐

  1. 解决nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

    nginx先监听了ipv4的80端口之后又监听了ipv6的80端口,于是就重复占用了.更加坑人的是你去看了端口占用它又把80端口释放了,是不是很囧. 解决方案是编辑nginx的配置文件 修改这一段:

  2. Angular问题04 模块导入错误???、BrowserModule模块重复加载???、material模块引入后报错

    1 模块导入错误 1.1 问题描述 项目启动时报错:元数据错误,错误截图如下: 1.2 问题原因 利用VsCode开发angular项目时利用自动导入出现错误 坑01:VsCode 的自动导入功能比较 ...

  3. Ubuntu16.04 ARM平台移植libcurl curl-7.63.0

    libcurl是免费的轻量级的客户端网络库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS,POP3, P ...

  4. 41、OrthoMCL和mcl软件进行基因家族分析

    转载:http://www.realbio.cn/news/124.html https://blog.csdn.net/seallama/article/details/43820763 http: ...

  5. NOIP2018 解题笔记

    D1T1 铺设道路 在场上并没有想到积木大赛这道原题. 差分之后可以把在$[l, r]$这段区间$ - 1$变成在$l$处$ - 1$,在$r + 1$处$ + 1$,然后最终目标是使$\forall ...

  6. sql server行列转化

    行列转换: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 李四 数学 84 李四 物理 94 想变成(得到如下结果): 姓名 语文 数学 物理 ---- - ...

  7. Git教程--廖雪峰

    Git简介 1.Git是目前世界上最先进的分布式版本控制系统(没有之一) 2.集中式和分布式版本控制系统有什么区别呢?      区别在于历史版本维护的位置:Git本地仓库包含代码库还有历史库,在本地 ...

  8. 策略(Strategy)模式

    /* * 环境(Context)角色:持有一个Strategy类的引用. * 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现.此角色给出所有的具体策略类所需的接口. * ...

  9. 使用C#代码发送邮件,不完整的demo

    作为一只入行不久的小菜鸟,最近接触到利用C#代码发送邮件,做了一点小的demo练习.首先,需要配置,这边我做的是QQ邮箱的相关的练习,练习之前,首先应该解决的问题肯定是关于服务器的配置,这边偷一个懒, ...

  10. [.net 多线程]异步编程模式

    .NET中的异步编程 - EAP/APM 从.NET 4.5开始,支持的三种异步编程模式: 基于事件的异步编程设计模式 (EAP,Event-based Asynchronous Pattern) 异 ...