[Agc001E] BBQ Hard

题目大意

给定\(n\)对正整数\(a_i,b_i\),求\(\sum_{i=1}^{n-1} \sum_{j=i+1}^n \binom{a_i+b_i+a_j+b_j}{a_i+a_j}\)。

试题分析

显然,后面的式子是一个\(\binom{n+m}{m}\)的形式,也就是我们从位置\((-a_i,-b_i)\)走到位置\((a_j,b_j)\)。

那么我们把式子转化成:$$\frac{\sum_{i=1}^n \sum_{j=1}^n \binom {a_i+b_i+a_j+b_j} {a_i+a_j} - \sum_{i=1}^n \binom{a_i+b_i+a_i+b_i}{a_i+b_i} }{2}$$

然后前面的可以直接dp,后面的直接算就好了。

#include<iostream>
#include<cstring>
#include<vector>
#include<queue>
#include<cstdio>
#include<algorithm>
using namespace std; #define LL long long inline int read(){
int x=0,f=1;char c=getchar();
for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
for(;isdigit(c);c=getchar()) x=x*10+c-'0';
return x*f;
}
const int INF=9999999;
const int MAXN=300010;
const int MAXM=2010;
const int Mod = 1e9+7; int N; int a[MAXN+1],b[MAXN+1];
int f[MAXM*2+1][MAXM*2+1];
LL ifac[MAXN+1],fac[MAXN+1],inv[MAXN+1];
int A[MAXN+1],B[MAXN+1]; inline LL C(LL n,LL m){
if(n<m) return 0; if(n==m||!m) return 1;
return fac[n]*ifac[m]%Mod*ifac[n-m]%Mod;
} int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
N=read(); fac[0]=1; inv[1]=1; ifac[1]=ifac[0]=1; LL ans=0;
for(int i=1;i<=(MAXM<<2)+100;i++) fac[i]=fac[i-1]*i%Mod;
for(int i=2;i<=(MAXM<<2)+100;i++){
inv[i]=(Mod-(Mod/i))*inv[Mod%i]%Mod;
ifac[i]=ifac[i-1]*inv[i]%Mod;
}
for(int i=1;i<=N;i++){
A[i]=read(),B[i]=read();
f[MAXM-A[i]][MAXM-B[i]]++;
ans=(ans-C(A[i]*2+B[i]*2,A[i]*2)%Mod+Mod)%Mod;
}
for(int i=1;i<=MAXM*2;i++){
for(int j=1;j<=MAXM*2;j++){
(f[i][j]+=f[i-1][j])%=Mod;
(f[i][j]+=f[i][j-1])%=Mod;
}
}
for(int i=1;i<=N;i++){
(ans+=f[A[i]+MAXM][B[i]+MAXM])%=Mod;
} printf("%lld\n",ans*inv[2]%Mod);
return 0;
}

[Agc001E] BBQ Hard的更多相关文章

  1. AGC001E BBQ Hard 组合、递推

    传送门 题意:给出长度为$N$的两个正整数序列$A_i,B_i$,求$\sum\limits_{i=1}^N \sum\limits_{j=i+1}^N C_{A_i+A_j+B_i+B_j}^{A_ ...

  2. [agc001E]BBQ Hard[组合数性质+dp]

    Description 传送门 Solution 题目简化后要求的实际上是$\sum _{i=1}^{n-1}\sum _{j=i+1}^{n}C^{A[i]+A[j]}_{A[i]+A[j]+B[i ...

  3. agc001E - BBQ Hard(dp 组合数)

    题意 题目链接 Sol 非常妙的一道题目. 首先,我们可以把\(C_{a_i + b_i + a_j + b_j}^{a_i + a_j}\)看做从\((-a_i, -b_i)\)走到\((a_j, ...

  4. AtCoder AGC001E BBQ Hard (DP、组合计数)

    题目链接: https://atcoder.jp/contests/agc001/tasks/agc001_e 题解: 求\(\sum^n_{i=1}\sum^n_{j=i+1} {A_i+A_j+B ...

  5. [AGC001E]BBQ Hard 组合数学

    题目描述 Snuke is having another barbeque party. This time, he will make one serving of Skewer Meal. He ...

  6. NOIp2018模拟赛三十八

    爆〇啦~ A题C题不会写,B题头铁写正解: 随手过拍很自信,出分一看挂成零. 若要问我为什么?gtmdsubtask! 神tm就一个subtask要么0分要么100,结果我预处理少了一点当场去世 难受 ...

  7. (浙江金华)Day 1 组合数计数

    目录 Day 1 组合计数 1.组合数 (1).C(n,m) 读作n选m,二项式系数 : (2).n个东西里选m个的方案数 不关心选的顺序: (3).二项式系数--->多项式系数: 2.组合数计 ...

  8. 【agc001e】BBQ HARD(动态规划)

    [agc001e]BBQ HARD(动态规划) 题面 atcoder 洛谷 题解 这些agc都是写的整场的题解,现在还是把其中一些题目单独拿出来发 这题可以说非常妙了. 我们可以把这个值看做在网格图上 ...

  9. AGC001 E - BBQ Hard 组合数学

    题目链接 AGC001 E - BBQ Hard 题解 考虑\(C(n+m,n)\)的组合意义 从\((0,0)\)走到\((n,m)\)的方案数 从\((x,y)\)走到\((x+n,y+m)\)的 ...

随机推荐

  1. 最短路径之迪杰斯特拉(Dijkstra)算法

    对于网图来说,最短路径,是指两顶点之间经过的边上权值之和最少的路径,并且我们称路径上的第一个顶点为源点,最后一个顶点为终点.最短路径的算法主要有迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd ...

  2. Linux Kernel sys_call_table、Kernel Symbols Export Table Generation Principle、Difference Between System Calls Entrance In 32bit、64bit Linux【转】

    转自:http://www.cnblogs.com/LittleHann/p/4127096.html 目录 1. sys_call_table:系统调用表 2. 内核符号导出表:Kernel-Sym ...

  3. haproxy代理https配置方法【转】

    记得在之前的一篇文章中介绍了nginx反向代理https的方法,今天这里介绍下haproxy代理https的方法: haproxy代理https有两种方式:1)haproxy服务器本身提供ssl证书, ...

  4. 使用pandas把mysql的数据导入MongoDB。

    使用pandas把mysql的数据导入MongoDB. 首先说下我的需求,我需要把mysql的70万条数据导入到mongodb并去重, 同时在第二列加入一个url字段,字段的值和第三列的值一样,代码如 ...

  5. Django中的QuerySet

    一.QuerySet 查询集,类似一个列表,包含了满足查询条件的所有项.QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作.只有你查询的时候才真正的操作数据库.意味 ...

  6. 02 How to Write Go Code 如何编写go语言代码

    How to Write Go Code   如何编写go语言代码 Introduction   介绍 Code organization  组织代码 Overview  概述 Workspaces  ...

  7. jexus linux x64[标准版] - 未集成mono 配置https

    一.找到mono安装位置 sudo find / -name mono 二.首先查看“/lib”或“/usr/lib”等系统库文件夹中是否有SSL库文件的名字,该文件名应该是“libssl.so.版本 ...

  8. Spring 事务管理基础知识点

    参考文章 spring事物配置,声明式事务管理和基于@Transactional注解的使用 尚硅谷 佟刚 Spring视频教程PPT Spring支持编程式事务管理和声明式事务管理两种方式 编程式事务 ...

  9. GUC-9 ReadWriteLock : 读写锁

    import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWrit ...

  10. HBase(九)HBase表以及Rowkey的设计

    一 命名空间 1 命名空间的结构 1) Table:表,所有的表都是命名空间的成员,即表必属于某个命名空间,如果没有指定, 则在 default 默认的命名空间中. 2) RegionServer g ...