题目链接

\(Description\)

给定长为\(n\)的两个数组\(a,b\),求$$\sum_{i=1}n\sum_{j=i+1}n\binom{a_i+a_j+b_i+b_j}{a_i+a_j}\ mod\ 10^9+7$$

\(n\leq2\times10^5,a_i,b_i\leq2000\)。

\(Solution\)

考虑\(\binom{n+m}{n}\)的组合意义:在网格图上从\((0,0)\)走到\((n,m)\)的方案数(NE lattice paths)。也等于从\((x,y)\)走到\((x+n,y+m)\)的方案数。

考虑\(\binom{a_i+a_j+b_i+b_j}{a_i+a_j}\)的组合意义:从\((0,0)\)走到\((a_i+a_j+b_i+b_j)\)的方案数,从\((-a_i,-b_i)\)走到\((a_j,b_j)\)的方案数。

考虑计算从任意\((-a_i,-b_i)\)走到任意\((a_j,b_j)\)的方案数。从某个点走到另一个点的方案数可以递推得到。从某些点走到某个点的方案数同样可以递推。

算完后减去每个点自己到自己的方案数,再把答案除以\(2\)就行了。

复杂度\(O((2\max(a_i,b_i))^2)\)。

//127ms	64384KB
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
#define mod 1000000007
#define Mod(x) x>=mod&&(x-=mod)
typedef long long LL;
const int N=2e5+5,M=4005,D=2001; int A[N],B[N],f[M][M],fac[N],ifac[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
inline int FP(int x,int k)
{
int t=1;
for(; k; k>>=1,x=1ll*x*x%mod)
if(k&1) t=1ll*t*x%mod;
return t;
}
#define C(n,m) 1ll*fac[n]*ifac[m]%mod*ifac[(n)-(m)]%mod int main()
{
int n=read(),mx=0;
for(int i=1,x,y; i<=n; ++i)
{
A[i]=x=read(), B[i]=y=read(), ++f[D-x][D-y];//(-x+D,-y+D)
mx=std::max(mx,std::max(x,y));
}
int lim=D+mx;
for(int i=D-mx; i<=lim; ++i)
for(int j=D-mx; j<=lim; ++j)
f[i][j]+=f[i-1][j]+f[i][j-1], Mod(f[i][j]);//a little bigger LL ans=0;
for(int i=1; i<=n; ++i) ans+=f[D+A[i]][D+B[i]];
ans%=mod; lim=mx<<2, fac[0]=fac[1]=1;
for(int i=2; i<=lim; ++i) fac[i]=1ll*fac[i-1]*i%mod;
ifac[lim]=FP(fac[lim],mod-2);
for(int i=lim-1; ~i; --i) ifac[i]=1ll*ifac[i+1]*(i+1)%mod;
for(int i=1; i<=n; ++i) ans-=C(A[i]*2+B[i]*2,A[i]*2); ans%=mod, ans*=FP(2,mod-2);
printf("%lld\n",(ans%mod+mod)%mod); return 0;
}

AGC 001E.BBQ Hard(组合 DP)的更多相关文章

  1. AGC 018E.Sightseeing Plan(组合 DP)

    题目链接 \(Description\) 给定三个不相交的矩形\(A(X1,Y1)-(X2,Y2),B(X3,Y3)-(X4,Y4),C(X5,Y5)-(X6,Y6)\),求 从第一个矩形中某点\(a ...

  2. Atcoder Grand Contest 001E - BBQ Hard(组合意义转化,思维题)

    Atcoder 题面传送门 & 洛谷题面传送门 Yet another 思维题-- 注意到此题 \(n\) 数据范围很大,但是 \(a_i,b_i\) 数据范围很小,这能给我们什么启发呢? 观 ...

  3. CF 553A 组合DP

    http://codeforces.com/problemset/problem/553/A A. Kyoya and Colored Balls time limit per test 2 seco ...

  4. [Bzoj3193][JLOI2013]地形生成 (排列组合 + DP)

    3193: [JLOI2013]地形生成 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 459  Solved: 223[Submit][Status ...

  5. acdream 1412 2-3Trees (组合+DP)

    题意:2-3树的每个结点(除了叶子外)有2或3个孩子(分支),假设是一个满2-3树,那么给出叶子的数量,求这样的树有多少棵.(注:有2个孩子的结点视为相同,有3个孩子的结点视为相同,比如倒数第2层有4 ...

  6. HDU4532(组合DP)

    题目:安排座位 解析:http://www.douban.com/note/269136472/ #include <iostream> #include <string.h> ...

  7. HDU 4532 湫秋系列故事——安排座位 (组合+DP)

    湫秋系列故事——安排座位 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

  8. nyoj1076-方案数量 【排列组合 dp】

    http://acm.nyist.net/JudgeOnline/problem.php?pid=1076 方案数量 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 ...

  9. AGC001 E - BBQ Hard【dp+组合数学】

    首先直接按要求列出式子是\( \sum_{i=1}^{n}\sum_{j=i+1}^{n}C_{a_i+a_j+b_i+b_j}^{a_i+a_j} \) 这样显然过不了,因为ab的数据范围比较小,所 ...

随机推荐

  1. springboot系列十一、redisTemplate和stringRedisTemplate对比、redisTemplate几种序列化方式比较

    一.redisTemplate和stringRedisTemplate对比 RedisTemplate看这个类的名字后缀是Template,如果了解过Spring如何连接关系型数据库的,大概不会难猜出 ...

  2. sqlserver2008r2实现镜像

    拓扑图 环境 主服务器: 192.168.8.16 winserver2008b 镜像服务器 192.168.11.128 mssql1 见证服务器: 192.168.8.69 server2008c ...

  3. centos 编译安装PHP5.4

    2013年12月29日 19:52:30 已经安装好Apache 2.4 php版本 5.4 ./configure --prefix=/usr/local/lamp/php --with-apxs2 ...

  4. Oracle 数据库、实例、用户、表空间、表之间的关系

    数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库. ...

  5. 两道SQL题目

    1.查询省内所有城市气温都大于35度的省份(表名:Temp) SELECT province FROM Temp WHERE province NOT IN ( SELECT province FRO ...

  6. 测试开发之前端——No6.HTML5中的键盘事件

    键盘事件 由键盘触发的事件. 适用于所有 HTML 5 元素: 属性 值 描述 onkeydown script 当按下按键时运行脚本 onkeypress script 当按下并松开按键时运行脚本 ...

  7. Java中强、软、弱、虚引用

    1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一个对象具有强引用,那垃圾回收器绝不会回收它.当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使 ...

  8. 数论知识点总结(noip范围)

    数论知识点: 约数个数和约数和公式(例题:POJ1845 分治思想): 质因数分解 p1^k1xp2^k2xp3^k3...pn^kn 约数个数和:(1+k1)(1+k2)...(1+kn) 所有约数 ...

  9. 2018-2019-2 网络对抗技术 20165333 Exp2 后门原理与实践

    实验内容 1.使用netcat获取主机操作Shell,cron启动 2.使用socat获取主机操作Shell, 任务计划启动 3.使用MSF meterpreter(或其他软件)生成可执行文件,利用n ...

  10. MVC4 下DropDownList使用方法(转)

    与MVC3相比,差别很大: 表现形式一: public ActionResult Main() { List<SelectListItem> items = new List<Sel ...