博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【题解】Atcoder AGC#01 E-BBQ Hard
阅读量:4317 次
发布时间:2019-06-06

本文共 1815 字,大约阅读时间需要 6 分钟。

  计数题萌萌哒~

  这道题其实就是统计 \(\sum_{i=1}^{n}\sum_{j=i+1}^{n}C\binom{a[i] + a[j]}{a[i] + a[j] + b[i] + b[j]}\) 。这个式子不是很好统计,我们可以转化一下:

 \((\sum_{i=1}^{n}\sum_{j=i+1}^{n}C\binom{a[i] + a[j]}{a[i] + a[j] + b[i] + b[j]} - \sum_{i = 1}^{n}C\binom{2 * a[i]}{2 * a[i] + 2 * b[i]}) / 2\)

  这样的话,我们只需要考虑如何统计前一部分的贡献即可。前一部分的贡献是多少呢?就是平面上所有的点 \((-a[j], -b[j])\) 到达 \((a[i],b[i])\) 的方案数。这个我们可以 \(a[i]^{2}\)的 dp 统计。**启示:有时缩小限制好,有时放宽限制容斥计算大法好哇~~

#include 
using namespace std;#define maxn 2500000#define mod 1000000007#define maxm 4020#define int long longint n, a[maxn], b[maxn], inv[maxn], fac[maxn];int ans, m, S = 2005, f[maxm][maxm];int read(){ int x = 0, k = 1; char c; c = getchar(); while(c < '0' || c > '9') { if(c == '-') k = -1; c = getchar(); } while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x * k;}void Up(int &x, int y) { x = (x + y) % mod; }int C(int n, int m){ if(n < m || m < 0 || n < 0) return 0; return fac[n] * inv[m] % mod * inv[n - m] % mod;}void pre(){ fac[0] = fac[1] = 1; inv[0] = inv[1] = 1; for(int i = 2; i < maxn; i ++) fac[i] = fac[i - 1] * i % mod; for(int i = 2; i < maxn; i ++) inv[i] = (mod - mod / i) * inv[mod % i] % mod; for(int i = 2; i < maxn; i ++) inv[i] = inv[i] * inv[i - 1] % mod;}signed main(){ pre(); n = read(); for(int i = 1; i <= n; i ++) { a[i] = read(), b[i] = read(); f[-a[i] + S][-b[i] + S] ++; } m = 2 * S; for(int i = 1; i <= m; i ++) for(int j = 1; j <= m; j ++) Up(f[i][j], (f[i - 1][j] + f[i][j - 1]) % mod); for(int i = 1; i <= n; i ++) { Up(ans, f[a[i] + S][b[i] + S]); Up(ans, mod - C(2 * (a[i] + b[i]), 2 * a[i])); } printf("%lld\n", ans * inv[2] % mod); return 0;}

 

转载于:https://www.cnblogs.com/twilight-sx/p/9823086.html

你可能感兴趣的文章
委托异步回调
查看>>
扩展欧几里得算法
查看>>
いつでもどこでも本格的に麻雀&チュートリアルが充実!iPhone/iPod touch/iPad向け「雀龍門Mobile」をiPadで遊んでみました...
查看>>
如何重置mysql中的root密码
查看>>
bzoj 3171: [Tjoi2013]循环格 最小费用最大流
查看>>
关于IO的一些数字
查看>>
高放的c++学习笔记之模板与泛型编程
查看>>
bzoj 1089: [SCOI2003]严格n元树
查看>>
mybatis 日期比较
查看>>
更新jdk
查看>>
string与StringBuilder之性能比较
查看>>
python3----练习题(购物车)
查看>>
IOS不错的学习资源特别是图片效果的处理上
查看>>
HDU 2072(字符串的流式操作,学习了)
查看>>
win10 vs2015源码编译opencv、opencv_contrib、Tesseract
查看>>
css取消a标签在移动端点击时的背景颜色
查看>>
Annotation(注解)
查看>>
MySQL(四)--练习题
查看>>
高效掌握C#第五回---猜单词游戏
查看>>
07-Java 中的IO操作
查看>>