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

题面 LOJ #6432. 「PKUSC2018」真实排名 注意排名的定义 , 分数不小于他的选手数量 !!! 题解 有点坑的细节题 ... 思路很简单 , 把每个数分两种情况讨论一下了 . 假设它为 \(x\) . 不对它进行翻倍操作 : 那么很容易发现 \(\displaystyle [\lceil \frac{x}{2}\rceil, x)\) 的数都不翻倍 . 其余部分任意 . 假设有 \(tot\) 个 . 那么这部分答案就是 \(\displaystyle \binom {n-tot…
题面 Loj 题解 枚举每一个点 分两种情况 翻倍or不翻倍 \(1.\)如果这个点\(i\)翻倍, 要保持排名不变,哪些必须翻倍,哪些可以翻倍? 必须翻倍: \(a[i] \leq a[x] < a[i]*2\) 那么其他的都可以选择性翻倍 \(2.\) 考虑点\(i\)不翻倍, 不能翻倍的: \(a[i]/2 \leq a[x] < a[i]\) 注意有和\(a[i]\)相等的可以翻倍 以上可以排序后,二分+组合数算 细节比较多,具体看代码 Code #include<cstdio&…
题目: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 lon…
题面 Loj 题解 普通的暴力是直接枚举改或者不改,最后在判断最后对哪些点有贡献. 而这种方法是很难优化的.所以考虑在排序之后线性处理.首先先假设没有重复的元素 struct Node { int poi, id; } a[N]; bool operator < (const Node &a, const Node &b) { return a.poi < b.poi; } bool operator < (const Node &a, const int &am…
题目在这里...... 对于这道题,现场我写炸了......谁跟我说组合数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 *…
题解 简单分析一下,如果这个选手成绩是0,直接输出\(\binom{n}{k}\) 如果这个选手的成绩没有被翻倍,那么找到大于等于它的数(除了它自己)有a个,翻倍后不大于它的数有b个,那么就从这\(a + b\)个选手里找翻倍选手使得它排名不变 答案是\(\binom{a + b}{K}\) 如果这个选手成绩翻倍了,那么大于等于它的所有数,依旧大于它的有\(c\)个,然后剩余\(a - c\)个必须翻倍,剩下的翻不翻倍随意,所以答案是 \(\binom{N - (a - c) - 1}{K -…
题面 传送门 题解 这数据范围--这输出大小--这模数--太有迷惑性了-- 首先对于\(0\)来说,不管怎么选它们的排名都不会变,这个先特判掉 对于一个\(a_i\)来说,如果它不选,那么所有大于等于它的数随便选,乘\(2\)之后还是小于它的数也随便选 如果它选呢?所有大于等于它,且小于它的\(2\)倍的数全都得选,剩下的数就随便选不选了 然后没有然后了 //minamoto #include<bits/stdc++.h> #define R register #define fp(i,a,b…
前言 为什么随机跳题会跳到这种题目啊? Solution 我们发现可以把这个东西分情况讨论: 1.这个点没有加倍 这一段相同的可以看成一个点,然后后面的都可以. 这一段看成一个点,然后前面的不能对他造成影响的都可以. 2.这个点加倍了 这一段相同的看做一个点,然后前面的都可以 这一段相同的看成一个点,然后后面的如果对他的排名有影响,一定要加倍. 剩下的用组合数随便乱算一下就好了. 代码实现 #include<stdio.h> #include<stdlib.h> #include&…
一道不错的组合数问题! 分两类讨论: 1.\(a_i\) 没有翻倍,那些 \(\geq a_i\) 和 \(a_j\times 2<a_i\) 的数就没有影响了.设 \(kth\) 为 \(a_i\) 的排名,\(down\) 有多少个 \(a_j\times 2<a_i\),答案为 \(C_{down+kth-1}^{k}\) 2.\(a_i\) 有翻倍,那 \(a_i\leq a_j<a_i\times 2\) 的数也必须翻倍.设 \(up\) 为 \(a_i\times 2\) 的…
题面 题解 因为操作为将一些数字翻倍, 所以对于一个数\(x\), 能影响它的排名的的只有满足\(2y\geq x\)或\(2x>y\)的\(y\) 将选手的成绩排序,然后考虑当前点的方案 1. 不翻倍 此时,如果要保证\(x\)的排名不变,那么所有满足\(2y \geq x\)的\(y\)都不能动 设满足\(2y \geq x\)的数有\(\mathrm{Len}\)个,则方案数为\(\binom{n-\mathrm{Len}}{k}\) 2. 翻倍 此时,如果要保证\(x\)的排名不变,那么…