BZOJ5322: [JXOI2018]排序问题】的更多相关文章

对于一个序列,重排后有序的概率显然是∏cnti!/n!,其中cnti为第i种数出现次数.要使概率最小,显然应该让各种数字尽量平均分配.剩下的是div2BC左右的大讨论. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #defi…
题目链接 BZOJ5322 题解 意思就是使有序的排列尽量少 就是使相同的数尽量少 然后大力贪心即可 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include<cmath> #include<map> #define REP(i,n) for (register int i = 1; i <= (n); i++) #def…
传送门 不难看出期望就是 \(\frac{(n+m)!}{\prod_{v=1}^{max}(cnt_v!)}\),\(cnt_v\) 表示 \(v\) 这个数出现的次数. 贪心就是直接把 \(m\) 个数字每次选择一个 \(cnt\) 最小的加入,使得最后 \([l,r]\) 内每个数字出现的次数尽量平均. 直接按照数字出现的次数排序,从大到小枚举平均的次数是多少即可. # include <bits/stdc++.h> using namespace std; typedef long l…
[BZOJ5322][JXOI2018]排序问题(模拟) 题面 BZOJ 洛谷 题解 这题就显得很呆. 显然就是每次找到\([l,r]\)中出现次数最小的那个数并且放一个. 然后随便模拟一下就好了QwQ. #include<iostream> #include<cstdio> #include<algorithm> using namespace std; #define ll long long #define MOD 998244353 #define TOT 12…
5322: [Jxoi2018]排序问题 链接 分析: 每次选一个出现次数最小的. 代码: #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<cmath> #include<cctype> #include<set> #include<queue> #include<vector> #…
https://www.lydsy.com/JudgeOnline/problem.php?id=5322 https://loj.ac/problem/2543 <-可以看数据,要没有这数据我死活调不出来. https://www.luogu.org/problemnew/show/P4561 题面见上. 我们知道可重元素全排列=元素个数!/(每个元素个数!加和). 所以一个很显然的贪心就是我们取元素使得每个元素的个数都尽可能小. 我们先离散化,然后二分出sum,表示l~r我每个元素都取至少s…
题目大意 \(T\)(\(T\leq10^5\))组询问 每次给出\(n,m,l,r\),和\(n\)个数\(a_1,a_2,...,a_n\),要找出\(m\)个可重复的在区间\([l,r]\)的数,使\(a_1,a_2,...,a_n\)和选出的\(m\)个数组成的序列期望随机排序得到升序序列的次数最多 输出序列最多期望随机排序几轮,模998244353 \(n\leq2\times10^5,\sum n\leq2\times10^6,m\leq10^7,a_i\leq10^9\) 题解 假…
题意 题目链接 Sol 首先一种方案的期望等于它一次排好的概率的倒数. 一次排好的概率是个数数题,他等于一次排好的方案除以总方案,也就是\(\frac{\prod cnt_{a_i}!}{(n+m)!}\).因为最终的序列是一定的,两个序列不同当且仅当权值相同的数排列方式不同. 他的期望为\(\frac{(n+m)!}{\prod cnt_i!}\),我们希望这玩意儿尽量大,也就是下面的尽量小 显然对于每个\(cnt\)来说,最大值越小越好,可以直接二分,然后check一下是否可行. 具体的贪心…
嘟嘟嘟 这是今天做的第二道九条可怜的题,现在对他的题的印象是:表面清真可做,实则毒瘤坑人. 首先要感谢吉司机,我期望学的特烂,好在样例直接告诉我们期望怎么求了. 令\(b_i\)表示第\(i\)个不同的数的出现次数,那么期望就是 \[\frac{(n + m)!}{b_1! * b_2! * \ldots b_{tot}!}\] 所以我们只要让分母尽量小就行了. 这个问题也不难,想想就知道,只要让所有\(b_i\)尽可能接近就行了. 证明很简单,以两个数为例:如果\(a + b = x\),问\…
突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf\)的题目,以及\(loj\)上的一些省的集训题目,还有\(uoj\)的各种\(round\)的题目. 大块大块的做题记录就在这里记录一下,省选后再来看结果,至少努力过就不曾后悔了不是吗? 首先先是省选题的记录,然后有比赛的记录,做到每周至少完成一整场\(CF\)或者\(AtCoder\)比赛的题解…