打表可以发现相当于不存在长度>=3的递减子序列. 考虑枚举在哪一位第一次不卡限制.注意到该位一定会作为前缀最大值.判掉已确定位不合法的情况后,现在的问题即为求长度为i.首位>j的合法排列个数,设其为g[i][j]. 由于首位>j,1~j在排列中一定依次出现,并且在j出现之前,>j的部分也一定单增.于是可以先将>j的部分安排好,再将1~j不改变相对顺序地插入.>j的部分即是考虑没有各种奇怪的限制要怎么求.设f[i][j]为长度i的排列,第一个非前缀max的数在j位置的方案…
BZOJ_5416_[Noi2018]冒泡排序_DP+组合数+树状数组 Description www.lydsy.com/JudgeOnline/upload/noi2018day1.pdf 好题. 合法的排列的交换次数刚好是交换次数的下界,也就是说不能有多余的交换. 也就是对于ai这个数,只能从i到ai这一个方向走. 考虑x,y,z三个数(x>y>z),y需要和x.z各交换一次,这显然不能使y这个数满足只向一个方向移动这个条件. 于是转化为排列的连续下降子序列最多为2. 考虑DP,设f[i…
题目: 洛谷 4769 博客页面左下角的嘴嘴瓜封神之战中的题目 分析: 一个排列交换次数为 \(\frac{1}{2}\sum_{i=1}^{n}|i-p_i|\) 的充要条件是这个排列不存在长度为 \(3\) 的下降序列(即:最长下降子序列不超过 \(2\) ),证明 感性理解如下: 考虑如果交换次数大于 \(\frac{1}{2}\sum_{i=1}^{n}|i-p_i|\) ,那么一定存在至少一个元素「绕路」了. 必要性 :「绕路」分为如下两种情况: 第一,某个元素的目标位置在它左侧,但它…
https://www.zybuluo.com/ysner/note/1261482 题面 戳我 \(8pts\ n\leq9\) \(44pts\ n\leq18\) \(ex12pts\ q_i=i\) \(80pts\ n\leq1000\) \(100pts\ n\leq6*10^5\) 解析 \(8pts\)算法 \(O(n!n^2)\)模拟即可. 当然如果忘了答案清\(0\)的话.... \(44pts\)算法 手玩下样例,可以感受到:当交换次数达到下限时,每个数到自己位置的过程中不…
题意大概是给定一个长度为$n$的排列$p$,求有多少长度为$n$的排列满足冒泡排序的交换次数为$\frac{1}{2} \sum\limits_{i = 1}^{n}|i - p_{i}|$. 可以发现,该式子是冒泡排序复杂度的下界,任意一个数想要回到规定的位置至少要被交换$|i - p_{i}|$次,即在排序过程中不浪费任何一次交换,每一个数都只能向它归回原位的方向走. 稍加思索,可以得出一个结论: 任何一个最长下降子序列长度超过$2$的排列一定是不合法的. 任何一个最长下降子序列不超过$2$…
题目描述 把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分发(5,1,1和1,1,5是同一种方法) 输入输出格式 输入格式: 第一行是测试数据的数目t(0 <= t <= 20),以下每行均包括二个整数M和N,以空格分开.1<=M,N<=10 输出格式: 对输入的每组数据M和N,用一行输出相应的K. 输入输出样例 输入样例#1: 1 7 3 输出样例#1: 8 输入样例#2: 3 3 2 4 3 2 7 输出样例#2: 2 4 2 Solution…
题目链接 题意 求有多少个字典序严格大于给定排列 \(q_i\) 的排列满足其逆序对数(冒泡排序需要交换的次数)达到下限 \(\frac{1}{2}\sum_{i=1}^n |i-p_i|\) Sol 很神仙的一题. 首先我们打表 (滑稽). 发现当没有字典序限制时的答案就是卡特兰数. 考虑感性理解,那么考虑卡特兰数的经典应用,它是最长下降子序列长度不超过 2 的排列的个数. 发现很有道理啊 owo. 于是我们就考虑在有字典序限制的条件下求解这个玩意. dp有点难想到,我们设 \(f[i][j]…
LINK:冒泡排序 神题. 可以想到爆搜 期望得分5~10分. 打成这个样子心态不得爆炸? 仔细分析 一个不合法序列还有什么标志. 容易想到某个数字离自己位置相反的方向多走了一步. 考虑单独对每个数字进行分析 每次都是这个数字前面的数字会让它多走一步. 对于每个位置 i 位置上的数字 \(a_i\) \(cnt_i\)表示前面有多少个数字比其大. 那么有 \(i-cnt_i<a_i\)那么就不合法了. 考虑状压 对于字典序可以利用总方案-<=的方案来做 类似数位dp. 期望得分44. code…
题目传送门 传送点 题目大意 给定$n$个标号依次为$1, 2, \cdots, n$的点,其中一些点被染成一些颜色,剩下的点没有染色.你需要添加一些有向边并将剩下的点染色,满足有向边从编号小的一端指向编号大的一端,图中所有黑白相错的路径的条数与$p$对2取模同余. $1\leqslant n\leqslant 10^6$ 想一下如何求DAG中黑白相错的路径的条数.用$g_{i}$表示$i$结尾的路径的条数. 考虑怎么转移,枚举前一个点,然后$g_{i} += g_{pre}[col_{pre}…
考虑有序选择各子集,最后除以m!即可.设f[i]为选i个子集的合法方案数. 对f[i]考虑容斥,先只满足所有元素出现次数为偶数.确定前i-1个子集后第i个子集是确定的,那么方案数为A(2n-1,i-1). 显然不能为空集,于是去掉前i-1个已经满足限制的方案,也即f[i-1]. 然后去掉第i个子集和之前重复的情况.显然如果有重复,将这两个去掉后仍然是合法的.那么方案数为f[i-2]*(i-1)*(2n-1-(i-2)). #include<iostream> #include<cstdi…