题目链接

题意:求出C(n,0)~C(n,m)的和,mod 1e9+7 。

分析:题目给的数据范围1<=n,m<=1e5,1<=T<=1e5,直接求出C(n,i)然后累加起来显然复杂度不行,在官方的题解中给出了如下的公式。

虽然在比赛中找出了这两个东西,但是看过的人那么多,一味的以为有直接用公式算出来的方法,所以一直在推公式,思维太局限,没有想到莫队。预处理阶乘和逆元,在双指针移动的时候能够O(1)的求出C(i,j);废话不多说,上代码。

#include <bits/stdc++.h>
#define mst(a,b) memset(a,b,sizeof(a))
#define ALL(x) x.begin(),x.end()
#define pii pair<int,int>
#define eps 1e-8
inline int lowbit(int x){ return x & -x; }
const int N = 1e5+10;
const long long mod = (long long) 1e9 + 7;
const int INF = 0x3f3f3f3f;
const long long LINF = (1LL << 62);
typedef long long LL;
typedef unsigned long long ULL;
const double PI = acos(-1.0);
using namespace std;LL C[N],inv[N],ans[N];
int bl[N];struct Q{int n, m, id, No;  bool operator < (const Q &t) const{if(id != t.id) return id < t.id;  //对块排序,相同的块就按右区间小的排return m < t.m;}
}Q[N];
LL q_pow(LL base, LL b){LL res = 1;while(b){if(b&1) res = res * base % mod;base = base * base % mod;b >>= 1;}return res;
}
void init(){   //预处理阶乘和逆元C[0] = C[1] = 1;for(int i = 2; i <= 1e5; i++) C[i] = C[i - 1] * i % mod;inv[(int)1e5] = q_pow(C[(int)1e5], mod - 2);for(int i = 1e5 - 1; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
}
inline LL get_C(int n, int m){return C[n] * inv[m] % mod * inv[n - m] % mod;
}int main(){
#ifdef LOCALfreopen("in.txt", "r", stdin);
//    freopen("out.txt","w",stdout);
#else
//    freopen("caravan.in","r",stdin);
//    freopen("caravan.out","w",stdout);
#endifinit();LL inv2 = q_pow(2, mod - 2);int blo = sqrt(1e5);for(int i = 1; i <= 1e5; i++) bl[i] = (i - 1) / blo + 1; //预处理每个数所在的块的编号int T; scanf("%d",&T);int n, m;for(int i = 1; i <= T; i++){scanf("%d%d",&Q[i].n,&Q[i].m);Q[i].No = i;Q[i].id = bl[Q[i].n];}sort(Q + 1, Q + 1 + T);int l = 0, r = 0;LL sum = 1;for(int i = 1; i <= T; i++){  //然后就是愉快的左右指针移动求答案了,下面就是公式所对应的东西。while(l < Q[i].n) sum = (sum + sum - get_C(l, r) + mod) % mod, l++;while(l > Q[i].n) sum = (sum + get_C(l - 1, r)) * inv2 % mod, l--;while(r < Q[i].m) sum = (sum + get_C(l, r + 1)) % mod, r++;while(r > Q[i].m) sum = (sum - get_C(l, r) + mod) % mod, r--;ans[Q[i].No] = sum;}for(int i = 1; i <= T; i++) printf("%I64d\n",ans[i]);return 0;
}

HDU - 6333 Harvest of Apples (莫队)相关推荐

  1. HDU - 6333 Problem B. Harvest of Apples(莫队变形+思维+组合数学,好题)

    题目链接:点击查看 题目大意:给出n个苹果树,每个苹果树上可以摘一个苹果,问摘不超过m个苹果有多少种方式 题目分析:首先根据题意和样例可以推出,答案就是一个组合数之和,设C(n,m)为从n个数中选m个 ...

  2. 杭电多校 Harvest of Apples 莫队

    问题 B: Harvest of Apples 时间限制: 1 Sec  内存限制: 128 MB 提交: 78  解决: 35 [提交] [状态] [讨论版] [命题人:admin] 题目描述 Th ...

  3. HDU - 6333 Harvest of Apples

    题意: T次询问,每次给出n,m.求sigma(k:0->m)C(n, k). 题解: 用离线莫队来做. 令S(n,m) = sigma(k:0->m)C(n, k). S(n+1, m) ...

  4. hdu 4676 Sum Of Gcd 莫队+phi反演

    Sum Of Gcd 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4676 Description Given you a sequence of ...

  5. HDU - 6610 Game(带修莫队)

    题目链接:点击查看 题目大意:给出一个长度为 n 的序列 a,sum 为数列 a 的前缀异或和,再给出 m 次操作,每次操作分为两种类型: 1 l r:询问 sum 在区间 [ l , r ] 内有多 ...

  6. HDU 4417 Super Mario(莫队 + 树状数组 + 离散化)

    Super Mario 思路 区间查找问题,容易想到离线莫队,确实这题就是莫队,接下来我们考虑如何维护区间高度值问题. 既然是离线嘛,我们容易想到离散化和他挂钩,想想这题是否需要离散化,高度的最大值是 ...

  7. hdu 5145 NPY and girls (莫队算法)

    题意:有一个长度为n的数字序列,m次询问一个区间l-r中数字重新排列的方案数(mod 10^9+7). 明显的莫队算法,只需要排序,然后预处理一下逆元就可以了. 所谓的莫队算法,最初版本是求曼哈顿距离 ...

  8. HDU 6333 Problem B. Harvest of Apples(莫队离线)

    Problem B. Harvest of Apples(莫队离线) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/26214 ...

  9. *【HDU - 6333】Problem B. Harvest of Apples (莫队,逆元,组合数学)(这样预处理正确吗?)

    题干: There are nn apples on a tree, numbered from 11 to nn.  Count the number of ways to pick at most ...

最新文章

  1. ExtJs 备忘录(3)—— Form表单(三) [ 数据验证 ]
  2. win7x64注册表显卡渲染速度_Geek3D GpuTest GUI(显卡测试软件)下载-Geek3D GpuTest GUI(显卡测试软件)免费版下载v0.7.0...
  3. Java使用Maven加载redis.clients连接Redis
  4. c语言迷宫算法设计,基于C语言的可连通迷宫算法设计及实现(毕业学术论文设计).doc...
  5. 干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
  6. python 访问sas 逻辑库,SAS | 逻辑库和SAS数据集
  7. JavaScript算法(实例十)回文数 / 立方根 / 进制转化
  8. 安卓c语言文档下载,C语言.NET技术09.doc
  9. 2017年——秋招面试总结(网宿、美图)
  10. nginx 代理ssh
  11. Intl.NumberFormat 设置数字格式
  12. 睡眠分期中的各种特征
  13. 图像Radon变换与傅里叶变换(matlab)
  14. VS2008简体中文版下载
  15. 如何提升码代码能力方法论漫谈
  16. 微信付款为什么无法连接服务器,前台微信付款报错:无法连接服务器,请检查网络连接?...
  17. 红外遥控及Android手机红外遥控器开发
  18. latex中英文字体设置
  19. maven package后 Idea项目中找不到target文件
  20. sql题一(空位连续座位买票)

热门文章

  1. 这款全网热评的无线路由器,到底有什么特别?
  2. 最新destoon 模板标签大全
  3. 美云智数智造MES,实现数字化、智能化
  4. centos8 安装zabbix提示All mirrors were tried记录
  5. 小米台灯突然自己亮了_台灯购买的那些事
  6. application作用域
  7. 关于阿里巴巴企业内部应用生命周期管理的一点思考
  8. 剑侠情缘手游服务器bug修复,剑侠情缘手游19职业段氏修复无BUG版服务端+客户端+后台+网站+教程(带门客绝学小风车忘忧酒馆+特色神器)...
  9. jquery 点击实现升序降序图标切换
  10. iphone邮箱看不到已发送_苹果手机邮箱无法发送 iphone邮箱没有已发送邮件