[BZOJ4559][JLoi2016]成绩比较 Description G系共有n位同学,M门必修课.这N位同学的编号为0到N-1的整数,其中B神的编号为0号.这M门必修课编号为0到M-1的整数.一位同学在必修课上可以获得的分数是1到Ui中的一个整数.如果在每门课上A获得的成绩均小于等于B获得的成绩,则称A被B碾压.在B神的说法中,G系共有K位同学被他碾压(不包括他自己),而其他N-K-1位同学则没有被他碾压.D神查到了B神每门必修课的排名.这里的排名是指:如果B神某门课的排名为R,则表示有且…
题面 darkbzoj 题解 \(g[i]\)表示长度为\(i\)的非降序列的个数 那么, \[ ans = \sum_{i=1}^{n}g[i]*(n-i)!-g[i+1]*(n-i-1)!*(i+1) \] 怎么求\(g[i]\)呢 设\(f[i][j]\)为长度为\(i\)的非降序列,以最后一个数是\(j\)的数量 \(f[i][j] = \sum f[i-1][k](k<=j)\) 这样是\(O(n^3)\) 因为带修改,所以树状数组优化转移 复杂度:\(O(n^2logn)\) Cod…
[BZOJ4361]isn(动态规划,容斥) 题面 BZOJ 题解 首先我们如果确定了一个不降序列,假设它的长度为\(i\), 那么可行的方案数为\(i*(n-i)!\),但是这样有一些非法的情况,即删掉最后一个数之前已经是有序的了. 那么设\(g[i]\)表示长度为\(i\)的不降序列的总数 因为所有长度为\(i\)的不降序列一定包含在长度为\(i+1\)的不降序列之中 如果先构成了一个长度为\(i+1\)的不降序列,再删掉了一位,那么这样是不合法的. 所以长度为\(i\)的不降序列的贡献为:…
[BZOJ4361]isn Description 给出一个长度为n的序列A(A1,A2...AN).如果序列A不是非降的,你必须从中删去一个数, 这一操作,直到A非降为止.求有多少种不同的操作方案,答案模10^9+7. Input 第一行一个整数n. 接下来一行n个整数,描述A. Output 一行一个整数,描述答案. Sample Input 4 1 7 5 3 Sample Output 18 HINT 1<=N<=2000 题解:想到动归+树状数组+容斥,但是容斥系数想复杂了~ 我们希…
[BZOJ5287][HNOI2018]毒瘤(动态规划,容斥) 题面 BZOJ 洛谷 题解 考场上想到的暴力做法是容斥: 因为\(m-n\le 10\),所以最多会多出来\(11\)条非树边. 如果就是一棵树的话,显然答案就是独立集的个数. 非树边\(2^{11}\)枚举,强制非树边的两端同时备选导致不合法,容斥计算答案即可. 这样子的复杂度是\(O(2^{11}n)\),估算出来是\(2s\),然而在\(HNOI\)考场跑要\(20s\)(大雾 考虑如何优化这个东西. 我们\(2^{11}\)…
[LOJ#2542][PKUWC2018]随机游走(min-max容斥,动态规划) 题面 LOJ 题解 很明显,要求的东西可以很容易的进行\(min-max\)容斥,那么转为求集合的\(min\). 那么怎么求解每个集合的\(min\)呢. 显然以起点为根节点,如果点集中一个点在另外一个点的子树内,显然不需要考虑,索性丢掉.考虑剩下的点,把他们的子树丢掉(要访问子树肯定要访问到某个点),那么剩下的点直接扣下来做一个高斯消元就可以求出到达每个点的期望,那么\(min\)就求出来. 设\(f[S]\…
[BZOJ2024]舞会(动态规划,容斥,高精度) 题面 BZOJ 洛谷 题解 这种关系显然要先排序才不会不想影响. 设\(f[i][j]\)表示前\(i\)个女生中,选了\(j\)个女生配对,并且女生比男生高,剩余的随意匹配的方案数. 转移: \(f[i][j]=f[i-1][j]+f[i-1][j-1]*(p-(j-1)\) 然后容斥一下即可,高精度常数巨大. \(BZOJ\)似乎过不了??? #include<iostream> #include<cstdio> #inclu…
[BZOJ2839]集合计数(容斥,动态规划) 题面 BZOJ 权限题 Description 一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得 它们的交集的元素个数为K,求取法的方案数,答案模1000000007.(是质数喔~) Input 一行两个整数N,K Output 一行为答案. Sample Input 3 2 Sample Output 6 题解 比较简单的容斥吧.. 设\(f[i]\)表示至少有\(i\)个相同元素的方案数…
[BZOJ3622]已经没有什么好害怕的了(动态规划,容斥) 题面 BZOJ 题解 很明显的,这类问题是要从至少变成恰好的过程,直接容斥即可. 首先我们要求的是(糖果>药片)=(药片>糖果)+k,再加上保证不存在相同的数, 所以(糖果>药片)+(药片>糖果)=n,解出(糖果>药片)=\(\frac{n+k}{2}\). 此时我们要求的至少就是"至少存在\(i\)对(糖果>药片)的方案数". 直接算很麻烦,那就\(dp\)算.首先进行排序. 设\(f[…
[BZOJ3294]放棋子(动态规划,容斥,组合数学) 题面 BZOJ 洛谷 题解 如果某一行某一列被某一种颜色给占了,那么在考虑其他行的时候可以直接把这些行和这些列给丢掉. 那么我们就可以写出一个\(dp\) 设\(f[i][r][c]\)表示考虑了前\(i\)种颜色,还剩下\(r\)行\(c\)列没被染色. 那么转移的时候枚举一下当前颜色染了\(a\)行\(b\)列转移就好了. 但是问题来了,怎么计算用\(K\)个棋子恰好覆盖\(a\)行\(b\)列的方案数呢? 恰好很不好算,那么我们换一下…