HDU6333 莫队+组合数】的更多相关文章

题目大意: 给定n m 在n个数中最多选择m个的所有方案 #include <bits/stdc++.h> using namespace std; #define INF 0x3f3f3f3f #define LL long long ; ; /********组合数模板*********/ LL pow_mod(LL a, LL b) { LL res = 1LL; a %= mod; while(b){ ) res = res * a % mod; a = a * a % mod; b…
Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 2397    Accepted Submission(s): 934 Problem Description There are n apples on a tree, numbered from 1 to n.Count th…
题意大致是有n个苹果,问你最多拿走m个苹果有多少种拿法.题目非常简单,就是求C(n,0)+...+C(n,m)的组合数的和,但是询问足足有1e5个,然后n,m都是1e5的范围,直接暴力的话肯定时间炸到奶奶都不认识了.当时想了好多好多,各种骚操作都想了一遍就是没想到居然是莫队....我用S(n,m)来记录C(n,0)+...+C(n,m)的和作为一个询问的答案 由组合数公式C(n,m) = C(n-1,m-1)+C(n-1,m)可以推的下面的式子 S(n,m) = S(n,m-1) + C(n,m…
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6333 题意: T次询问,每次询问n个苹果中最多拿m个苹果的方法数 题解: 因为T为1e5,所以直接做时间复杂度会很高,所以我们因为每次询问可以离线下来,我们考虑莫队算法 首先这个题可以看作求 \[ \sum_{i=0}^mC_n^i\\ 令S(n,m)为\sum_{i=0}^mC_n^i\\ 可以得到公式\\ S(n,m)=S(n,m-1)+C_n^m\\ S(n,m)=S(n,m=1)-C_n^m+…
题目描述 分析 \(80\) 分的暴力都打出来了还是没有想到莫队 首先对于 \(s[n][m]\) 我们可以很快地由它推到 \(s[n][m+1]\) 和 \(s[n][m-1]\) 即 \(s[n][m+1]=s[n][m]+C_n^{m+1}\) \(s[n][m-1]=s[n][m]-C_n^m\) 然后我们考虑怎么由 \(s[n][m]\) 推到 \(s[n-1][m]\) 和 \(s[n+1][m]\) 其实画出杨辉三角观察性质即可 摘自 \({\color{black}{M}}{\c…
hdu6333 Problem B. Harvest of Apples 题目传送门 题意: 求(0,n)~(m,n)组合数之和 题解: C(n,m)=C(n-1,m-1)+C(n-1,m)    设 S(n,m)=C(n,0)+C(n,1)+C(n,2)+...+C(n,m) 然后将S(n,m) 通过 第一个公式 拆项 最后化简 变为 S(n,m)=2*S(n-1,m)-C(n-1,m); 即: 所以可以离线用莫队算法 参考博客:链接1.链接2 代码: #include <bits/stdc+…
HDU-6333 题意: 有n个不同的苹果,你最多可以拿m个,问有多少种取法,多组数据,组数和n,m都是1e5,所以打表也打不了. 思路: 这道题要用到组合数的性质,记S(n,m)为从n中最多取m个的方法总数,显然是C(n,0),C(n,1)……C(n,m)的和. 显然S(n,m+1) = S(n, m) + C(n,m+1); 还有一个等式就不那么明显了,S(n+1,m) = 2 * S(n,m) - C(n,m); 我也是在王神犇的指导下明白的. 既然知道了一组(n,m)是可以在很快的时间下…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6333 题目: 题意:求C(n,0)+C(n,1)+……+C(n,m)的值. 思路:由于t和n数值范围太大,所以此题查询复杂度不能太高,由组合数的将前k项求和可以推出,从而可以转换成莫队的区间查询,将n当成l,m当成r即可.此题需要注意,对于求组合数得用o(1)的方法求,也就是阶乘相除的方法,对于分母我们得求逆元,因而借助欧拉定理. 代码实现如下: #include <set> #include &…
http://acm.hdu.edu.cn/showproblem.php?pid=6333 莫队算法是一个离线区间分块瞎搞算法,只要满足:1.离线  2.可以O(1)从区间(L,R)更新到(L±1,R±1)就能直接套板子了 这道题不是区间算法,但是有递推式: 把它看成区间更新orz 所以可以莫队orz #define _CRT_SECURE_NO_WARNINGS #include <cmath> #include <iostream> #include <stdio.h&…
传送门 好题. 考察了莫队和组合数学两个知识板块. 首先需要推出单次已知n,mn,mn,m的答案的式子. 我们令f[i]f[i]f[i]表示当前最大值为第iii个数的方案数. 显然iii之后的数都是单调递减且连续的. 所以后面的方法是1种. 考虑第111~i−1i-1i−1个位置. 显然放法数为∑j=1i−1f[j]\sum _{j=1} ^{i-1}f[j]∑j=1i−1​f[j] 又因为f[1]=1,f[i−1]=∑j−1i−2f[j]f[1]=1,f[i-1]=\sum _{j-1} ^{…