和组合数有关的dp】的更多相关文章

题目链接:http://acm.swust.edu.cn/problem/715/ Time limit(ms): 1000 Memory limit(kb): 65535   在数据加密和数据压缩中常需要对特殊的字符串进行编码.给定的字母表A 由26 个小写英文字母组成A={a,b,…,z}.该字母表产生的升序字符串是指字符串中字母按照从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1 次.例如,a,b,ab,bc,xyz 等字符串都是升序字符串.现在对字母表A 产生的所有…
题目链接: [UOJ86]mx的组合数 题目大意:给出四个数$p,n,l,r$,对于$\forall 0\le a\le p-1$,求$l\le x\le r,C_{x}^{n}\%p=a$的$x$的数量.$p<=3000$且保证$p$是质数,$n,l,r<=10^30$. 对于$10\%$的数据,可以直接杨辉三角推.对于$20\%$的数据,因为$n$是确定的,可以递推出$C_{x+1}^{n}=C_{x}^{n}*\frac{x+1}{x+1-n}$.对于另外$20\%$的数据,可以枚举$x…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ275.html 题解 用卢卡斯定理转化成一个 k 进制意义下的数位 dp 即可. 算答案的时候补集转化一下会好写一些. 代码 #include <bits/stdc++.h> using namespace std; typedef long long LL; LL read(){ LL x=0,f=0; char ch=getchar(); while (!isdigit(ch)) f|=ch=='…
1. UVaLive 7143 Room Assignment 用dp[i][r]表示,前i个盒子已经放完了,手上还拿着r对同色球. 状态转移方程为:dp[i+1][r-a-b] = dp[i][r] * comb(r, a) * comb(r - a, b) * comb(sum - 2 * r, c[i] - a - 2 * b). 2. 「2017 山东一轮集训 Day7」逆序对 见http://www.cnblogs.com/yinwuxiao/p/8849821.html 3. bzo…
为了1A我居然写了个暴力对拍... 那个式子本质上是求nk个数里选j个数,且j%k==r的方案数. 所以把组合数的递推式写出来f[i][j]=f[i-1][j]+f[i-1][(j-1+k)%k]...我们知道求组合数实际上是可以矩阵乘法优化的,只是没必要,但是这个时候就用上了... 于是矩阵乘法优化,AC之~ #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #i…
题目大意:给你一个序列,你可以在序列中任选一个子序列,求子序列每一项的积是一个平方数的方案数. 1<=a[i]<=70 因为任何一个大于2的数都可以表示成几个质数的幂的乘积 所以我们预处理70以内的质数,把它作为二进制状压的状态,每个在序列中出现数Hash一下,组合数推一下 所以把奇次幂的状态表示为1,偶次幂的状态就是0,比如6就是11,42就是1011 而平方数的每个质因子的指数都是偶数,所以最终结果的状态就是0000000... 转移的过程,两个数的乘积,就是这两个数的质因子二进制的状态的…
达哥送分给我我都不要,感觉自己挺牛批. $type=0:$ 跟visit那题类似,枚举横向移动的步数直接推公式: $ans=\sum C_n^i \times C_i^{\frac{i}{2}} \times C_{n-i}^{\frac{n-i}{2}},i\% 2=0$ $type=1:$ 因为不能触碰负半轴,所以可以把右移看成+1,左移看成-1,转化为前缀和大于等于0的问题 于是直接Catalan数就好了.注意是第$\frac {n}{2}$项的Catalan. $Catalan_n=C_…
题目大意:令Sum(i)为i在二进制下1的个数 求∏(1<=i<=n)Sum(i) 一道非常easy的数位DP 首先我们打表打出组合数 然后利用数位DP统计出二进制下1的个数为x的数的数量 最后输出∏(1<=x<=logn)x^ans[x]就可以 此题的坑在于这题的组合数和数位DP的结果都是指数 对指数取模不能直接取 要取Phi(p) 于是我们对10000006取模 然后这题就WA了 由于10000007不是个质数! 10000007=941*10627 于是我们得到Phi(p)=…
Adjacent Bit Counts 4557 Adjacent Bit CountsFor a string of n bits x 1 , x 2 , x 3 ,..., x n , the adjacent bit count of the string (AdjBC(x)) is given byx 1 ∗ x 2 + x 2 ∗ x 3 + x 3 ∗ x 4 + . . . + x n−1 ∗ x nwhich counts the number of times a 1 bit…
尽量沿着边走距离最短.化减后 C(n+1,k)+ n - k, 预处理阶乘,Lucas定理组合数取模 DP? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 128000/128000 K (Java/Others) Total Submission(s): 1899    Accepted Submission(s): 633 Problem Description Figure 1 shows the Yang Hui Tri…
当然可以打组合数+CRT什么的,但是其实不必那么麻烦. 先讲那个思路,再转化过来吧. 首先可以发现的一个问题:所有颜色之间是没有区别的,所以我们其实并不在意到底是哪几种,我们只需要知道有几种就可以了. 逐层递推:设dp[i][j]表示到了第i层,这层用了某j种颜色的总方案数. 注意这里为了方便去重,所以dp的含义里是已经确定了j种颜色,所以不要乘上 $ C_m^j $ 那么再设s[i]是填到第i曾为止的总方案数那么s[i]=Σdp[i][j]*C[m][j] 还需要预处理一下g数组,g[i][j…
bzoj 3856: Monster 虽然是sb题,,但是要注意h可能<=a,,,开始忘记判了WA得很开心. #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> using namespace std; long long h, a, b, k; int main(){ ; while(scanf(&qu…
数位DP 2009年刘聪<浅谈数位类统计问题> 例题一 从组合数 以及 数位DP的角度都可以做…… 首先转化成求1~n内K进制下只有0.1的数的个数: 考虑K进制下第一个为1的位,剩下的数位中0和1随便放……也就是算组合数了. 然后区间相减…… 写的好乱……还是去看论文吧 //Ural 1057 #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #inc…
数位DP AC十道题目以上 成就达成 八月份!三个月!想想就令人兴奋呢 开始写总结啦 貌似简单的数位DP只需要改改模板就可以啦 就按照我的做题顺序开始总结吧 先是学习了一发模板:http://www.cnblogs.com/jffifa/archive/2012/08/17/2644847.html 但是一开始学的不是很深刻,导致后来做题的时候犯了很多错误 hdu 2089 数字中不能出现62和4 一开始设计的状态是f[i][j]表示长度为i且上一个数字为j,然后写了一发过来 其实状态是可以精简…
咕咕咕了太久  多校博客直接从第三场跳到了第九场orz 见谅见谅(会补的!) 明明最后看下来是dp场 但是硬生生被我们做成了组合数专场…… 听说jls把我们用组合数做的题都用dp来了遍 这里只放了用组合数的题目 dp的还没有补(这又是一个大坑orz) 1001 Rikka with Nash Equilibrium      (hdoj 6415) 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6415 题意:给一个n*m的矩阵 其中放着从1到n*m的…
Link: 传送门 Solution: 原来CF的官方题解也能鸽啊…… 详细题解 该题思路: 1.对于每个点删边方案数为$fac[n-1]$,总贡献为每种方案下满足的概率的和,接下来直接求贡献 2.每次将该点看成根,树形$dp$,设$dp[i][j]$表示根到$i$该子树还有$j$条边的贡献 3.考虑合并子树(算上根到子树的边),由于两边互不影响,相乘后再乘上删边顺序不同的组合数皆可 $dp[v1][i]*dp[v2][j]*C(i+j,i)*C((sz[v1]-1-i)+(sz[v2]-1-j…
一句话题解 QwQ主要是因为这篇文章写的有点长……有时候要找某一个题可能不是很好找,所以写了这个东西. 具体的题意.题解和代码可以再往下翻._(:з」∠)_ AGC 001 C:枚举中点/中边. D:构造. E:根据组合数意义转为$DP$. F:拓扑排序,线段树优化连边. AGC 002 C:水题,看是否有a[i]+a[i+1]>=k. D:并查集上倍增,二分答案. E:博弈(坑) F:模型转化然后$DP$. AGC 003 C:一个数到自己应到位置距离为奇数的个数/2. D:数学,质因数分解,…
还记得第一次看见这题的时候好像还是联赛前后的事了,那时感觉这题好强……其实现在看来蛮简单的,分类讨论一下即可.题意非常的简单:每一行,每一列都不能超过两个棋子.考虑我们的dp,如果一行一行转移的话行上不能超过两个棋子是很好满足的,就看列上如何满足了.所以状态自然而然的设置为 \(f[i][j][k]\),分别代表枚举到第 \(i\) 行,之前的列上有 \(j\) 列上有两个棋子,\(k\)列上有一个棋子时的方案数. 然后分情况转移乘以组合数即可.虽然简单,但感觉还是有所启发:做组合数类型的DP,…
Link: ARC064 传送门 C: 贪心+对边界的特殊处理 #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ll res=; int n,x,dat[MAXN]; int main() { scanf("%d%d",&n,&x); ;i<=n;i++) scanf("%d",&dat[i]); ]>x) res+=dat[]…
4375: 孪生素数  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 324            Accepted:91 Description 所谓孪生素数指的就是间隔为 2 的相邻素数,它们之间的距离已经近得不能再近了,就象孪生兄弟一样.最小的孪生素数是 (3, 5),在 100 以内的孪生素数还有 (5, 7), (11, 13), (17, 19), (29, 31), (4…
树形dp+第二类斯特林数 又是这种形式,只不过这次不用伯努利数了 直接搞肯定不行,我们化简一下式子,考虑x^n的组合意义,是把n个物品放到x个箱子里的方案数.那么就等于这个i=1->n,sigma(s[n,i]*A(x,i)),就是枚举要分成几组,这个用斯特林数算,然后把这些组放进箱子里,那么就是A(x,i),A是排列,但是这样还是不行,我们把A(x,i)=C(x,i)*i!,这样就行了,阶乘和斯特林数可以提出来,只要预处理一个点的组合数就行了,也就是∑i=1->n ∑ j=1->k C…
DP? Problem Description Figure 1 shows the Yang Hui Triangle. We number the row from top to bottom 0,1,2,…and the column from left to right 0,1,2,….If using C(n,k) represents the number of row n, column k. The Yang Hui Triangle has a regular pattern…
testB 输入文件: testB.in  输出文件testB.out 时限3000ms 问题描述: 定义这样一个序列(a1,b1),(a2,b2),…,(ak,bk)如果这个序列是方序列的话必须满足下面两个条件: (1)1<=a1<=b1<a2<=b2<….<ak<=bk<=n .其中n是给定的正整数. (2)b1-a1,b2-a2,….,bk-ak两两互不相同. 现在方老师想知道给定n的情况下有多少种不同的长度为k的方序列. 答案取模10^9+7 输入描…
题目大意: 给你一个n然后是n个数. 然后是n-1个操作符,操作符是插入在两个数字之间的. 由于你不同的运算顺序,会产生不同的结果. 比如: 1 + 1 * 2 有两种  (1+1)*2   或者  1+(1*2) 1 *  2 * 3  也是两种即使结果是一样的  (1*2)*3  或者 1*(2*3) 问这所有不同的组合加起来的和对 1e9+7取余是多少.   这个其实就是区间DP了 dp[i][j] 代表的是区间  i 到 j 的和 枚举dp[i][j] 之间所有的子区间 假如是乘法: t…
题意: 给出一个标准2-3树的叶子节点(最底层节点)个数 L,求2-3数的形成方案数并取余 分析: 如果有L个叶子枚举 每个 可以使x*2+y*3=L 的 x y 那么在最底层就有  c(x+y,x)种  2,3的放法上一层就是有 x+y个叶子的子问题 这样就可以递推算了 枚举时首先注意到 x=L y=-L 是一组特解,因此可以由它求出所有的通解 提前处理出组合数. 然后对于每组合法的解通过dp转移即可 代码: #include <iostream> #include <stdio.h&…
题意 给定一棵 \(n\) 个点的树和一个常数 \(k\) , 对于每个 \(i\) , 求 \[\displaystyle S(i) = \sum _{j=1} ^ {n} \mathrm{dist}(i, j)^k\] \(n ≤ 50000, k ≤ 150\) 题解 先划划那个 \(S(i)\) 的式子 我们需要知道一个化 \(x^n(n \ge 0)\) 的东西qwq \[\displaystyle x^n=\sum_{k=0}^{n}\begin{Bmatrix} n \\ k \e…
http://lightoj.com/volume_showproblem.php?problem=1246 题意 有个(M+1)*(N+1)的棋盘,用k种颜色给它涂色,要求曼哈顿距离为奇数的格子之间不能涂相同的颜色,每个格子都必须有颜色,问可行的方案数. 分析 经一波分析,根据曼哈顿距离为奇数这一信息,可以将棋盘分为两部分,也就是相邻格子不能有相同颜色.一种颜色只能在一个部分中出现.现在考虑对一个部分的格子操作, dp[i][j]表示i个格子选择用了j种颜色的方案数,于是可以得到这样的递推式:…
题面 [错解] 一眼数位DP 设\(f(i,c00,c01,c10,c11)\)-- 神tm DP 哎好像每两位就一定对应c中的一个,那不用记完 所以可以设\(f(i,c00,c01,c10)\)-- 神tm DP 也发现用c可以算出0和1有多少个.多少段,可以组合数,但感觉细节太多,没有细想(主要是想肝T3) [正解] 如上所述,不难看出C00+C10=(0的个数),C10=(0的段数),C01+C11+1=(1的个数),C01+1=(1的段数) 然后类似数位DP的过程跑一遍,顺便记一下0.1…
Description 传送门 Solution 题目简化后要求的实际上是$\sum _{i=1}^{n-1}\sum _{j=i+1}^{n}C^{A[i]+A[j]}_{A[i]+A[j]+B[i]+B[j]}$ 这时看看n的数据范围瞬间绝望qaq. 不过看到A,B的数据范围似乎明白了什么...好像是O(n2)的是不是? 关键:从(0,0)走到(m,n)且只能往上和右走的方案数为$C_{n+m}^{n}$ 所以$C^{A[i]+A[j]}_{A[i]+A[j]+B[i]+B[j]}$等价于从…
4870: [Shoi2017]组合数问题 Time Limit: 10 Sec  Memory Limit: 512 MB Description Input 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 Output 一行一个整数代表答案. Sample Input 2 10007 2 0 Sample Output 8   题解: 今年的省选题…… 题目的要求很简单,就是求满足…