题目链接

AGC001 E - BBQ Hard

题解

考虑\(C(n+m,n)\)的组合意义

从\((0,0)\)走到\((n,m)\)的方案数

从\((x,y)\)走到\((x+n,y+m)\)的方案数

考虑\(C(a_i+b_i+a_j+b_j,a_i+b_i)\)的组合意义

从\((0,0)\)走到\((a_i+a_j,b_i+b_j)\)的方案数

从\((-a_i,-b_i)\)走到\((a_j,b_j)\)的方案数

考虑计算任意\((-a_i,-b_i)\)到任意\((a_i,b_i)\)的方案数

减去从自己到自己的就好了

代码


  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #define gc getchar()
  5. #define pc putchar
  6. inline int read() {
  7. int x = 0,f = 1;
  8. char c = gc;
  9. while(c < '0' || c > '9') c = gc;
  10. while(c <= '9' && c >= '0') x = x * 10 + c - '0',c = gc;
  11. return x * f ;
  12. }
  13. void print(int x) {
  14. if(x >= 10 ) print(x / 10);
  15. pc(x % 10 + '0');
  16. }
  17. int n;
  18. const int mod = 1e9 + 7;
  19. inline int fstpow(int x,int k ){
  20. int ret = 1;
  21. for(;k;k >>= 1,x = 1ll * x * x % mod)
  22. if(k & 1) ret = 1ll * ret * x % mod;
  23. return ret;
  24. }
  25. const int maxn = 25001;
  26. int a[200006],b[200007];
  27. int jc[(maxn << 2)],inv[(maxn << 2) + 7];
  28. inline int C(int x,int y) {
  29. return 1ll * jc[x] * inv[y] % mod * inv[x - y]% mod;
  30. }
  31. int main() {
  32. n = read();
  33. int ans = 0;
  34. for(int i = 1;i <= n;++ i) {
  35. a[i] = read(),b[i] = read();
  36. }
  37. for(int i = 1;i < (maxn << 1);++ i)
  38. for(int j = 1;j <= (maxn << 1);++ j)
  39. for(int i = 1;i <= n;++ i) {
  40. }
  41. jc[0] = jc[1] = 1;
  42. for(int i = 2;i < (maxn << 2); ++ i) jc[i] = 1ll * jc[i - 1] * i % mod;
  43. inv[(maxn << 2) - 1] = fstpow(jc[(maxn << 2) - 1],mod - 2);
  44. print(fstpow(jc[500000],mod - 2));
  45. for(int i = (maxn << 2) - 2;i;-- i) inv[i] = 1ll * inv[i + 1] * (i + 1) % mod;
  46. for(int i = 1;i <= n;++ i) {
  47. ans = ((ans - C(a[i] * 2 + b[i] * 2,a[i] * 2)) % mod + mod) % mod;
  48. }
  49. ans = (1ll * 500000004 * ans) % mod;
  50. print(ans);
  51. return 0;
  52. }

AGC001 E - BBQ Hard 组合数学的更多相关文章

  1. 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的数据范围比较小,所 ...

  2. [AGC001 E] BBQ Hard

    Description 有\(N(N\leq 200000)\)个数对\((a_i,b_i)(a_i,b_i,\leq 2000)\),求出\(\sum\limits_{i=1}^n\sum\limi ...

  3. [AGC001E]BBQ Hard 组合数学

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

  4. AGC001 E - BBQ Hard [组合数]

    这题就是要求 \(\sum_{i=1}^{n} \sum_{j=i+1}^{n} C(a_i+a_j+b_i+b_j,a_i+a_j)\) 考虑搞一搞,\(C(a_i+a_j+b_i+b_j,a_i+ ...

  5. 【AtCoder】AGC001

    AGC001 A - BBQ Easy 从第\(2n - 1\)个隔一个加一下加到1即可 #include <bits/stdc++.h> #define fi first #define ...

  6. atcoder题目合集(持续更新中)

    Choosing Points 数学 Integers on a Tree 构造 Leftmost Ball 计数dp+组合数学 Painting Graphs with AtCoDeer tarja ...

  7. A*G#C001

    AGC001 A BBQ Easy 贪心. https://agc001.contest.atcoder.jp/submissions/7856034 B Mysterious Light 很nb这个 ...

  8. 【AGC板刷记录】

    这个帖子,是在自己学知识点累了的时候就看看\(AGC\)的题目来休息. 而且白天上课可以做( AGC-001 \(A\ BBQ Easy\) 考虑从小到大排,相邻两个取为一对. BBQ Easy #i ...

  9. AT1983-[AGC001E]BBQ Hard【dp,组合数学】

    正题 题目链接:https://www.luogu.com.cn/problem/AT1983 题目大意 给出\(n\)个数对\((a_i,b_i)\) 求 \[\sum_{i=1}^n\sum_{j ...

随机推荐

  1. Java探针-Java Agent技术-阿里面试题

    Java探针参考:Java探针技术在应用安全领域的新突破 最近面试阿里,面试官先是问我类加载的流程,然后问了个问题,能否在加载类的时候,对字节码进行修改 我懵逼了,答曰不知道,面试官说可以的,使用Ja ...

  2. wget安装pip和pip3

    pip的安装 1.1 pip下载 wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=834b2 ...

  3. EMCA和EMCTL的简单用法

    背景 其实这两个完全是两回事,不过倒是有关系,emca就是建立的资料库,建立后就用emctl来管理服务了.oem有问题基本都是重建emca,然后用emctl来操作. 当时用emca感觉真是一阵空白,太 ...

  4. win7设置固定IP

    正文: 你必须知道你的路由器网关,一般是192.168.1.1(或192.168.0.1) 按传统的来:开始——控制面板——网络和共享中心——更改适配器设置.一般来讲,这里应该有两个图标,一个是有线网 ...

  5. vue系列之webstrom开发vue,无法热更新

    用vue-cli构建了项目之后在webstorm开发,用npm run dev跑本地服务,经常修改之后在浏览器刷新没反应,偶尔才会有刷新,需要重新跑一遍npm run dev才会更新,这是怎么回事呢? ...

  6. 使用console进行 性能测试 和 计算代码运行时间

    原文:http://www.tuicool.com/articles/JrARVjv 对于前端开发人员,在开发过程中经常需要监控某些表达式或变量的值,如果使用用 debugger 会显得过于笨重,最常 ...

  7. poj2442 堆应用

    #include <cstdio> #include <cstring> #include <string> #include <vector> #in ...

  8. 性能测试四十:Mysql存储过程造数据

    性能测试是基于大量数据的,而进行性能测试之前肯定没那么多数据,所以就要自己准备数据 数据构造方法: 1.业务接口 -- 适合数据表关系复杂 -- 优点:数据完整性比较好2.存储过程 -- 适合表数量少 ...

  9. 用switch语句判断月份,打印出当前月份所在的季节

    var today=new Date(); var abc=today.getMonth(); switch (abc) { case 0: case 1: case 2: document.writ ...

  10. oracle表分区创建

    一.什么是分区表表分区有以下优点: 1.数据查询:数据被存储到多个文件上,减少了I/O负载,查询速度提高. 2.数据修剪:保存历史数据非常的理想. 3.备份:将大表的数据分成多个文件,方便备份和恢复. ...