题目描述

分析

\(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}}{\color{red}{idoria7}}\)的博客

\(\Huge \%\%\%谢队\)



这样,我们可以 \(O(1)\) 转移,然后把 \(m\) 看成 \(l\) ,把 \(n\) 看成 \(r\),套一个莫队的板子

代码

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cmath>
  4. #define rg register
  5. const int maxn=1e6+5;
  6. const int mod=1e9+7;
  7. inline int read(){
  8. rg int x=0,fh=1;
  9. rg char ch=getchar();
  10. while(ch<'0' || ch>'9'){
  11. if(ch=='-') fh=-1;
  12. ch=getchar();
  13. }
  14. while(ch>='0' && ch<='9'){
  15. x=(x<<1)+(x<<3)+(ch^48);
  16. ch=getchar();
  17. }
  18. return x*fh;
  19. }
  20. int haha,q,n,m,ny[maxn],jc[maxn],jcc[maxn];
  21. int getC(int nn,int mm){
  22. return 1LL*jc[nn]*jcc[mm]%mod*jcc[nn-mm]%mod;
  23. }
  24. int blo,shuyu[maxn],ans[maxn];
  25. struct asd{
  26. int l,r,id;
  27. asd(){}
  28. asd(int aa,int bb,int cc){
  29. l=aa,r=bb,id=cc;
  30. }
  31. }b[maxn];
  32. bool cmp(asd aa,asd bb){
  33. if(shuyu[aa.l]==shuyu[bb.l]) return aa.r<bb.r;
  34. return aa.l<bb.l;
  35. }
  36. int main(){
  37. haha=read();
  38. ny[1]=1;
  39. for(rg int i=2;i<maxn;i++){
  40. ny[i]=1LL*(mod-mod/i)*ny[mod%i]%mod;
  41. }
  42. jc[0]=jcc[0]=1;
  43. for(rg int i=1;i<maxn;i++){
  44. jc[i]=1LL*jc[i-1]*i%mod;
  45. jcc[i]=1LL*jcc[i-1]*ny[i]%mod;
  46. }
  47. q=read();
  48. rg int aa,bb,mmax=0;
  49. for(rg int i=1;i<=q;i++){
  50. aa=read(),bb=read();
  51. b[i]=asd(bb,aa,i);
  52. mmax=std::max(mmax,bb);
  53. }
  54. blo=sqrt(mmax);
  55. for(rg int i=1;i<=mmax;i++){
  56. shuyu[i]=(i-1)/blo+1;
  57. }
  58. std::sort(b+1,b+1+q,cmp);
  59. int l=1,r=0,nans=1;
  60. for(rg int i=1;i<=q;i++){
  61. while(l>b[i].l){
  62. nans=(nans-getC(r,l)+mod)%mod;
  63. l--;
  64. }
  65. while(r<b[i].r){
  66. nans=(nans*2%mod-getC(r,l)+mod)%mod;
  67. r++;
  68. }
  69. while(l<b[i].l){
  70. nans=(nans+getC(r,l+1))%mod;
  71. l++;
  72. }
  73. while(r>b[i].r){
  74. nans=1LL*(nans+getC(r-1,l))%mod*ny[2]%mod;
  75. r--;
  76. }
  77. ans[b[i].id]=nans;
  78. }
  79. for(rg int i=1;i<=q;i++){
  80. printf("%d\n",ans[i]);
  81. }
  82. return 0;
  83. }

联赛模拟测试12 C. sum 莫队+组合数的更多相关文章

  1. [CSP-S模拟测试]:飘雪圣域(莫队)

    题目描述 $IcePrincess\text{_}1968$和$IcePrince\text{_}1968$长大了,他们开始协助国王$IceKing\text{_}1968$管理国内事物. $IceP ...

  2. 联赛模拟测试12 B. trade

    题目描述 分析 \(n^2\) 的 \(dp\) 应该比较好想 设 \(f[i][j]\) 为当前在第 \(i\) 天剩余的货物数量为 \(j\) 时的最大收益 那么它可以由 \(f[i-1][j]\ ...

  3. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  4. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  5. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  6. 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】

    [题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...

  7. [考试反思]0803NOIP模拟测试12:偿还

    嗯,rank5.没什么可评价的,高不算高低不算低. 一套好题,被我浪费了. 离上面280的大神差的有点远. 分机房的绝响就要来临. 越来越感觉自己变菜了,整体的能力水平在下滑. 说的不只是考试,包括平 ...

  8. 20190803 NOIP模拟测试12「斐波那契(fibonacci)· 数颜色 · 分组 」

    164分 rank11/64 这次考的不算太差,但是并没有多大的可能性反超(只比一小部分人高十几分而已),时间分配还是不均,T2两个半小时,T1半个小时,T3-额十几分钟吧 然额付出总是与回报成反比的 ...

  9. Harvest of Apples (HDU多校第四场 B) (HDU 6333 ) 莫队 + 组合数 + 逆元

    题意大致是有n个苹果,问你最多拿走m个苹果有多少种拿法.题目非常简单,就是求C(n,0)+...+C(n,m)的组合数的和,但是询问足足有1e5个,然后n,m都是1e5的范围,直接暴力的话肯定时间炸到 ...

随机推荐

  1. 和同事谈谈Flood Fill 算法

    前言 今天忙完了公司的工作后,发现同事在做LeeCode的算法题,顿时来了兴趣,于是王子与同事一起探讨如何能做好算法题,今天在此文章中和大家分享一下. 什么是Flood Fill 算法 我们今天谈论的 ...

  2. java中变量在内存的位置

    package day02; /* * 成员变量:在堆内存中,因为对象的存在,才在内存中存在:作用于整改类中 * 局部变量:在栈内存中:作用于函数中,或者语句中 * */ class car{ //描 ...

  3. 《Redis内存数据库》Redis环境搭建

    前言 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多 ...

  4. tcp、http 学习小结

    tcp.http 学习小结 前言 最近因为cdn的一个问题,困扰了自己好久.因为需要统计网站访问的成功数,而且要求比较精确.目前的实现不能满足要求,因为没有区别访问成功与否,也没有对超时做处理.期间解 ...

  5. JavaScript 流程控制-分支

    JavaScript 流程控制-分支 1.流程控制 在一个程序执行的过程中,各条代码的执行顺序对程序的结果是有直接影响的,很多时候我们要通过控制代码的执行顺序来实现我们要完成的功能. 简单理解:流程控 ...

  6. 单链表的前K个的逆序输出

    单链表逆序输出也是常被面试官问到题算法题,所以自己就总结了一下,在此贴出算法,与小伙伴们相互交流. 首先要有三个指针,前两个分别指向首节点,首节点的下一个节点,第三个是临时指针,是为了储存首节点的下一 ...

  7. Linux里隐藏的计算器,你知道它的奥秘吗?

    Linux里隐藏的计算器,你知道它的奥秘吗? 大家都知道,windows下有个计算器工具,我们在工作生活中经常使用到它.但是,你可知Linux下也同样有个计算器吗? 当然,良许说的是命令行下的计算器工 ...

  8. Windows Server系统部署MySQL数据库

    由于工作需要在阿里云服务器中使用MySQL,所以安装一下MySQL数据库,中间也踩了一些坑,现在将整个过程给大家记录下来,便于后续查找. 阿里云服务器是WinServer2012系统,之前在Windo ...

  9. java8的::

    public static void main(String[] args) throws Exception { // 第一种方法引用的类型是构造器引用,语法是Class::new,或者更一般的形式 ...

  10. spring mvc(3) DispatcherServlet

    通过前面的例子,我们实现了spring mvc模式,那么在spring mvc模式下请求是如何被执行最终返回页面的呢? 从服务器收到请求开始,执行流程如下: 1.服务器接收请求,根据web.xml的配 ...