题面戳这里

思路:

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. 简单shell实现

    http://blog.csdn.net/lishuhuakai/article/details/11928055 #include <stdio.h> #include <unis ...

  2. XHR的应用场景

    一.简史 IE5.5最早实现XHR,需要通过ActiveXObject创建xhr实例,直到IE7才定义了XMLHttpRequest对象.IE5.5实现XHR之后,其他浏览器紧随其后实现了XHR,直接 ...

  3. java消息中间件 RocketMQ Linux安装与运行

    阿里巴巴宣布捐赠RocketMQ到Apache软件基金会孵化项目,最近闲下来便去部署了一个试验版本玩玩. 至于RockeMQ是什么,原理架构什么的这里就不赘述了,这里只记录安装过程. 一.系统环境 s ...

  4. PAT 1062 Talent and Virtue

    #include <cstdio> #include <cstdlib> #include <cstring> #include <vector> #i ...

  5. Csharp:字符串操作

    public class StringControl { /// <summary> /// 客户端浏览器 /// http://en.wikipedia.org/wiki/Web_bro ...

  6. Django——form组件和ModelForm

    一.原生form实现书城增删改查 1.构建模型并完成数据库迁移 (1)构建书城模型 from django.db import models # Create your models here. # ...

  7. stark——pop功能(admin中添加功能)

    一.pop功能需要实现的功能和问题 1.如何在一对多和多对多字段后渲染 +2.+对应的跳转路径是什么3.保存添加记录同时,将原页面的对应的下拉菜单中添加该记录 二.window.open()方法详解 ...

  8. 我是一只IT小小鸟读书笔记3

    Part6: 一.    无论在什么时候,师兄师姐都是我们最好的资源,遇到不会的问题一定要及时向他们请教,善于利用身边的人脉关系也是一个基本的技能. 二.    爱好很多,但特长一定要有.仔细思考一下 ...

  9. 微软开源 PowerShell 并支持 Linux 和 OS X

    微软近日宣布开源 PowerShell,开始支持 Linux 和 OSX.PowerShell 是面向 Windows 和 Windows Server 的自动化平台和可扩展脚本语言,可帮助用户简化系 ...

  10. 【Leetcode】【Medium】Single Number

    Given an array of integers, every element appears twice except for one. Find that single one. Note:Y ...