题面戳这里

思路:

noip考莫队???!!!

考场上死活没往这方面想啊!!!数据分治忘写endl50pts滚粗了

这里每个询问都有n,m两个参数

我们可以把它看做常规莫队中的l和r

然后利用组合数的可递推性质就好了

相信改变m大家都会写,n呢?

看图:

我们发现,$S_n^m = S_{n-1}^m \times 2 - C_n^{m+1} + C_{n-1}^{m+1}$

(因为杨辉三角的性质)

所以n也可以递推

套个莫队就好了

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#define rii register int i
#define rij register int j
#define int long long
const int p=1e9+;
using namespace std;
struct que{
int n,m,ans,bh;
}x[];
int ny[],jc[],jcny[],q,sy[],nn,nm,ans;
void qny()
{
ny[]=;
ny[]=;
for(rii=;i<=;i++)
{
ny[i]=(p-p/i)*ny[p%i]%p;
}
}
void jic()
{
jcny[]=;
jc[]=;
jcny[]=;
for(rii=;i<=;i++)
{
jc[i]=jc[i-]*i;
jc[i]%=p;
jcny[i]=jcny[i-]*ny[i];
jcny[i]%=p;
}
}
void ycl()
{
qny();
jic();
}
bool cmp1(que lk,que kl)
{
if(sy[lk.n]==sy[kl.n])
{
return lk.m<kl.m;
}
return lk.n<kl.n;
}
bool cmp2(que lk,que kl)
{
return lk.bh<kl.bh;
}
int c(int n,int m)
{
int kkk=jcny[m];
kkk*=jc[n];
kkk%=p;
kkk*=jcny[n-m];
kkk%=p;
return kkk;
}
void cn(int zl)
{
if(zl==)
{
ans*=;
ans-=c(nn+,nm+);
ans+=c(nn,nm+);
ans+=p;
ans%=p;
}
if(zl==-)
{
ans+=c(nn,nm+);
ans-=c(nn-,nm+);
ans+=p;
ans%=p;
ans*=ny[];
ans%=p;
}
}
void cm(int zl)
{
if(zl==)
{
ans+=c(nn,nm+);
}
else
{
ans-=c(nn,nm);
ans+=p;
}
ans%=p;
}
signed main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
ycl();
scanf("%lld",&q);
scanf("%lld",&q);
int len=;
for(rii=;i<=;i++)
{
sy[i]=i/len+;
}
for(rii=;i<=q;i++)
{
scanf("%lld%lld",&x[i].n,&x[i].m);
x[i].bh=i;
}
sort(x+,x+q+,cmp1);
nn=,nm=,ans=;
for(rii=;i<=q;i++)
{
if(x[i].m<nn)
{
while(nm>x[i].m)
{
cm(-);
nm--;
}
while(nm<x[i].m)
{
cm();
nm++;
}
while(nn<x[i].n)
{
cn();
nn++;
}
while(nn>x[i].n)
{
cn(-);
nn--;
}
}
while(nn<x[i].n)
{
cn();
nn++;
}
while(nn>x[i].n)
{
cn(-);
nn--;
}
while(nm>x[i].m)
{
cm(-);
nm--;
}
while(nm<x[i].m)
{
cm();
nm++;
}
x[i].ans=ans;
}
sort(x+,x+q+,cmp2);
for(rii=;i<=q;i++)
{
printf("%lld\n",x[i].ans);
}
}

20181009noip HZ EZ两校联考sum(莫队,组合数学)的更多相关文章

  1. 20181009noip HZ EZ 两校联考trade(优先队列,贪心)

    题面戳这里 思路: 裸的,贪心... 考场上写了一个数据分治(70ptsDP,30pts线段树优化贪心,GG了后30分) 这道题其实很简单的 我们看图: 我们在A时刻买一个东西,在B时刻卖出去,我们可 ...

  2. 【赛时总结】NOIP2018-三校联考1024

    ◇NOIP三校联考-1024◇ 发现以前的博客写得似乎都很水……基本上都没什么阅读量QwQ 决定改过自新╰( ̄ω ̄o) 就从这篇博客开始吧~ 现场考得无地自容,看到题解才发现一些东西……(我第三题还没 ...

  3. [多校联考2019(Round 5 T3)]青青草原的表彰大会(dp+组合数学)

    [多校联考2019(Round 5)]青青草原的表彰大会(dp+组合数学) 题面 青青草原上有n 只羊,他们聚集在包包大人的家里,举办一年一度的表彰大会,在这次的表彰大会中,包包大人让羊们按自己的贡献 ...

  4. 三校联考 Day3

    三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...

  5. [2019多校联考(Round 6 T3)]脱单计划 (费用流)

    [2019多校联考(Round 6 T3)]脱单计划 (费用流) 题面 你是一家相亲机构的策划总监,在一次相亲活动中,有 n 个小区的若干男士和 n个小区的若干女士报名了这次活动,你需要将这些参与者两 ...

  6. [多校联考2019(Round 5 T1)] [ATCoder3912]Xor Tree(状压dp)

    [多校联考2019(Round 5)] [ATCoder3912]Xor Tree(状压dp) 题面 给出一棵n个点的树,每条边有边权v,每次操作选中两个点,将这两个点之间的路径上的边权全部异或某个值 ...

  7. [多校联考2019(Round 5 T2)]蓝精灵的请求(二分图染色+背包)

    [多校联考2019(Round 5)]蓝精灵的请求(二分图染色+背包) 题面 在山的那边海的那边住着 n 个蓝精灵,这 n 个蓝精灵之间有 m 对好友关系,现在蓝精灵们想要玩一个团队竞技游戏,需要分为 ...

  8. 【五校联考1day2】JZOJ2020年8月12日提高组T2 我想大声告诉你

    [五校联考1day2]JZOJ2020年8月12日提高组T2 我想大声告诉你 题目 Description 因为小Y 是知名的白富美,所以自然也有很多的追求者,这一天这些追求者打算进行一次游戏来踢出一 ...

  9. 【五校联考1day2】JZOJ2020年8月12日提高组T1 对你的爱深不见底

    [五校联考1day2]JZOJ2020年8月12日提高组T1 对你的爱深不见底 题目 Description 出乎意料的是,幸运E 的小R 居然赢了那个游戏.现在欣喜万分的小R 想要写一张明信片给小Y ...

随机推荐

  1. 封装http请求键值对的js函数

    //封装http请求键值对的函数 function Map() { this.keys = new Array(); this.data = {}; //添加键值对 this.put = functi ...

  2. SharePoint 2013 - Add-ins

    1. App Web & Host Web The special website to which the app is deployed is called an App Web. The ...

  3. 【嵌入式】安装Linux系统到开发板

    一.开发板基本介绍 Flash --相当于硬盘 RAM -- 内存 Micro USB或232串口 连电脑 USB 接口连摄像头 启动方式 选择开关 :SD卡启动或NAND FLASH 启动 USB转 ...

  4. gamemakerstudio:鼠标输入

    标准鼠标输入常量: mb_left 按下鼠标左键 mb_middle 按下鼠标中键 (这可能不是在所有目标平台上都有效) mb_right 按下鼠标右键 mb_none 没有按下任何鼠标键 mb_an ...

  5. 转:Windows版本判断大全

    /***************************************************************************** Operating System Vers ...

  6. Siebel Tools 开发笔记

    1.在Siebel Client上的菜单Help -> View 中可以找到开发所常用的信息 Screen:   此画面所使用的Screen名字在Tools的Object Explorer中的[ ...

  7. Linux文件寻址算法:逻辑地址到物理地址的转换

    题目描述: 编写一个函数实现Linux文件寻址的算法,即读取文件当前位置到物理存储位置的转换函数,需要给出运行的测试数据,可以假设和模拟需要的数据和结构.即编写一个函数unsigned long lt ...

  8. rel 属性<small>H5保留属性</small>

    源文件

  9. JVM原理:4 运行期优化

    JVM运行期优化 Java程序在运行的期间,可能会有某个方法或者代码块的运行特别频繁时,就会把这些代码认定为“热点代码”.为了提高热点代码的执行效率,在运行时JVM会将这些代码编译成与本地平台相关的机 ...

  10. 2018.11.24 struts2中的OGNL表达式及两者的结合

    OGNL表达式 OGNL:对象视图导航语言. ${user.addr.name} 这种写法就叫对象视图导航. OGNL不仅仅可以视图导航.支持比EL表达式更加丰富的功能. 理解图示 使用OGNL准备工 ...