Problem Description There are n apples on a tree, numbered from 1 to n.Count the number of ways to pick at most m apples.   Input The first line of the input contains an integer T (1≤T≤105) denoting the number of test cases.Each test case consists of…
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)是可以在很快的时间下…
题意:计算C(n,0)到C(n,m)的和,T(T<=1e5)组数据. 分析:预处理出阶乘和其逆元.但如果每次O(m)累加,那么会超时. 定义 S(n, m) = sigma(C(n,m)).有公式:S(n,m) = S(n,m-1) +C(n,m)以及S(n,m) = 2*S(n-1,m) - C(n-1,m). 这样就可以在O(1)的时间中计算出S(n+1,m),S(n-1,m),S(n,m+1),S(n,m+1).可以用莫队离线处理T组查询. #include<bits/stdc++.h&…
任意门:http://acm.hdu.edu.cn/showproblem.php?pid=6333 Problem B. Harvest of Apples Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 4043    Accepted Submission(s): 1560 Problem Description There a…
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+…
题目链接: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 &…
There are nn apples on a tree, numbered from 11 to nn. Count the number of ways to pick at most mm apples.  Input The first line of the input contains an integer TT (1≤T≤105)(1≤T≤105) denoting the number of test cases. Each test case consists of one…
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&…
http://acm.hdu.edu.cn/showproblem.php?pid=6333 题意: 求 C(0,n)+C(1,n)+...+C(m,n) 分析: 这道题,我们令s(m,n) = C(0,n)+C(1,n)+...+C(m,n) 那么这道题就变成求各种s(m, n) 于是,莫队这个算法便可浮现在脑海里! 我们现在需要用O(1)的时间转移式子 s(m,n)=s(m-1,n)+C(m,n) s(m,n)=s(m+1,n)-C(m+1,n) S(m,n)=2*s(m,n-1)-C(m,…
传送门:http://codeforces.com/contest/617/problem/E 参考:https://blog.csdn.net/keyboarderqq/article/details/55807154 题意:给出一系列数,对每个查询区间,计算有多少个子区间异或为k.思路: 可以先预处理异或前缀,一个区间[L,R]的异或值=a[R]^a[L-1]; 其中,a为异或前缀和数组:如果当前区间是[A,B],加一个右端点B+1,那么这个 B+1 的贡献就是[A,B]区间内有多少个a[x…