Description Input Output Sample Input 4 2 5 35 15 45 40 20 10 30 Sample Output 4 HINT 输入的2*n个数字保证全不相同. 还有输入应该是第二行是糖果,第三行是药片 Sol 先把两个数组排序,能够把题目的分析难度降低一些. 然后我们求出\(r[i]\)表示b中小于\(a[i]\)的最靠右的位置,这样dp的时候就能够\(O(1)\)转移了. 设\(f[i][j]\)表示考虑了i位,至少有j个满足a>b的方案数. 显然…
题目链接: 洛谷 BZOJ 题目大意:有两个长为 $n$ 的序列 $a,b$,问有多少种重排 $b$ 的方式,使得满足 $a_i>b_i$ 的 $i$ 的个数比满足 $a_i<b_i$ 的 $i$ 的个数恰好多 $k$ 个.答案对 $10^9+9$ 取模. $1\le n\le 2000,0\le k\le n$.保证 $a,b$ 中没有相同的数. 首先根据小学数学知识可知,$a_i>b_i$ 的个数应该是 $\frac{n+k}{2}$.如果 $n+k$ 不是偶数那么就无解. 那么就可…
3622: 已经没有什么好害怕的了 题意:和我签订契约,成为魔法少女吧 真·题意:零食魔女夏洛特的结界里有糖果a和药片b各n个,两两配对,a>b的配对比b>a的配对多k个学姐就可能获胜,求方案数 PS:洛谷月赛拿到了一个Modoka的挂件O(∩_∩)O哈哈~ 总的方案数就是\(n!\),相当于一个做全排列 恰好多k个,那么就是a>b的有\(k=k+\frac{n-k}{2}\)个 恰好\(\rightarrow\)容斥 \[ =\ \ge k个的配对方案数\ -\ \ge k+1个\ +…
分析 说白了就是一道先DP再二项式反演的水题,然后被脑残博主把"多\(k\)组"看成了"糖果比药片能量大的组数恰好为\(k\)组",还改了各种奇怪的地方,最后看了别人的题解才突然意识到这一点. 看来博主离退役不远了,快把我拖走吧没救了没救了. 代码 #include <bits/stdc++.h> #define rin(i,a,b) for(register int i=(a);i<=(b);++i) #define irin(i,a,b) fo…
题目链接 BZOJ3622 题解 既已开题 那就已经没有什么好害怕的了 由题目中奇怪的条件我们可以特判掉\(n - k\)为奇数时答案为\(0\) 否则我们要求的就是糖果大于药片恰好有\(\frac{n - k}{2} + k\)个的方案数,我们记为\(K\) 思路1 直接求恰好不好求,想到二项式反演: 如果有 \[b_k = \sum\limits_{i = k}^{n} {i \choose k} a_i\] 那么有 \[a_k = \sum\limits_{i = k}^{n} (-1)^…
题目链接 (Luogu) https://www.luogu.org/problem/P4859 (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3622 题解 我依然啥都不会啊-- 先给\(A,B\)数组从小到大排序. 考虑容斥,设\(f[j]\)表示钦定了\(j\)个满足\(A>B\), 所有钦定方案的方案数总和. 这个怎么算?dp算.设\(dp[i][j]\)表示前\(i\)个的\(f[j]\), 然后发现转移的时候并不知道之…
题目链接:http://codeforces.com/problemset/problem/245/H 题目大意:给你一个字符串s,对于每次查询,输入为一个数对(i,j),输出s[i..j]之间回文串的个数. 容斥原理: dp[i][j] = dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]; if( str[i]==str[j] 并且 str[i+1..j-1]是回文串 ) dp[i][j]++; 代码: #include <cstdio> #include <cs…
P4859 已经没有什么好害怕的了 啥是二项式反演(转) 如果你看不太懂二项式反演(比如我) 那么只需要记住:对于某两个$g(i),f(i)$ ---------------------------- 如果:$f(n)=\sum_{i=0}^{n}C(n,i)g(i)$ 那么:$g(n)=\sum_{i=0}^{n}(-1)^{n-i}\ C(n,i)f(i)$ ---------------------------- 如果:$f(k)=\sum_{i=k}^{n}C(i,k)g(i)$ 那么:…
洛谷的传送门 bzoj的传送门 题意简述:在DAG中增加一条有向边,然后询问新图中一共 有多少个不同的子图为"树形图". 解法:容斥原理+dp,先考虑没有环的情况,经过尝试不难发现总的有向树个数就等于所有点的度数的乘积.而现在有了环,显然我们应该减去算多了的值.这样的话只需要简单的容斥原理就行了. 代码如下: #include<bits/stdc++.h> #define mod 1000000007 #define N 200005 #define M 400005 #d…
[\(Description\)] 网格中每步可以走\((0,\cdots M_x,0\cdots M_y)\)中任意非零向量,有\(K\)种向量不能走,分别是\((r_1,r_1),(r_2,r_2),\cdots , (r_K,r_K)\). \(r_i\)一定是\(10\)的倍数.求从\((0,0)\)走到\((Tx,Ty)\)且走\(R\)步的方案数( \(Tx,Ty,Mx,My\leq 800,R\leq 1600,K\leq 50\)) 无 [\(Input\;Sample\)] 无…