bzoj4870】的更多相关文章

[BZOJ4870]组合数问题(动态规划,矩阵快速幂) 题面 BZOJ 洛谷 题解 显然直接算是没法做的.但是要求的东西的和就是从\(nk\)个物品中选出模\(k\)意义下恰好\(r\)个物品的方案数.\(n\)的范围这么大,往快速幂的方面靠.设\(f[i][j]\)表示从前\(i\)个物品中选了模\(k\)意义下\(j\)个物品的方案数,转移显然,快速幂即可. 时间复杂度\(O(k^3logn)\). 稍微注意一个细节,\(k=1\)的时候,矩阵的唯一一项不是\(1\),而是\(2\).所以在…
题目链接 BZOJ4870 题解 \[ans = \sum\limits_{i = 0}^{\infty}{nk \choose ik + r} \pmod p\] 发现实际是求 \[ans = \sum\limits_{i = 0}^{\infty}{nk \choose i}[i \mod k = r] \pmod p\] 设\(f[i][j]\)表示\(i\)个数选出\(x \mod k = j\)个数的方案数 利用组合数递推 + 矩乘转移即可 #include<algorithm> #…
题意: 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 思路:From http://blog.csdn.net/qq_33229466/article/details/70665582 实际上就是要我们从nk件物品里面选出若干件,使得其数量模k等于r的方案数. 显然的dp方程f[i,j]表示前i件物品拿了若干件使得其数量模k等于j的方案数. 那么显然有f[i,j]=f[i−1,j]+f[i−1,j−1] 矩阵乘法优化即可. 复杂度O(k3logn)…
4870: [Shoi2017]组合数问题 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 748  Solved: 398[Submit][Status][Discuss] Description Input 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 Output 一行一个整数代表答案. Sample Input 2 10007…
[BZOJ4870][Shoi2017]组合数问题 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 题解:题意:nk个数,选出一些数,使得选出来的数的个数%k=r的方案数(所以就不要管原来的题面了!) 然后这变成了一道动态规划题,由…
4870: [Shoi2017]组合数问题 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 HINT   Source 黑吉辽沪冀晋六省联考 dp+矩阵快速幂 很坑的就是k会等于1 所以不能写A.a[i][i]=1,A.a[i][(…
题目分析: 构造f[nk][r]表示题目中要求的东西.容易发现递推公式f[nk][r]=f[nk-1][r]+f[nk-1][(r-1)%k].矩阵快速幂可以优化,时间复杂度O(k^3logn). 代码: #include<bits/stdc++.h> using namespace std; int n,p,k,r; ][]; ][]; ][]; void fast_pow(long long pw){ ) { ;i<k;i++) ;j<k;j++) g[i][j] = mat[…
http://www.lydsy.com/JudgeOnline/problem.php?id=4870 80分暴力打的好爽 \(^o^)/~ 预处理杨辉三角 令m=n*k 要求满足m&x==x ,x<=m, x%k==r 的x的个数 结论:若n&m==m,则C(n,m)为奇数,否则为偶数 枚举m的子集,判断是否%k==r 时间复杂度:O(m的位子集个数),即O(2^(m的二进制中1的个数))极限是O(n*k) 杨辉三角第i行的和=2^i,即 那么用2^(nk) 减去 前面不用的C…
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 Solution 考虑这个式子的组合数意义,发现其实就是从$n*k$个物品里面取$\%k=r$件物品的方案数. 所以$f[i][j]$表示放完前$i$个,余数为$j$的方案数.$f[i…
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   题解: 今年的省选题…… 题目的要求很简单,就是求满足…