【题解】Atcoder AGC#01 E-BBQ Hard
计数题萌萌哒~
这道题其实就是统计 \(\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 <bits/stdc++.h>
using namespace std;
#define maxn 2500000
#define mod 1000000007
#define maxm 4020
#define int long long
int n, a[maxn], b[maxn], inv[maxn], fac[maxn];
int ans, m, S = , f[maxm][maxm]; int read()
{
int x = , k = ;
char c; c = getchar();
while(c < '' || c > '') { if(c == '-') k = -; c = getchar(); }
while(c >= '' && c <= '') x = x * + c - '', 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 < || n < ) return ;
return fac[n] * inv[m] % mod * inv[n - m] % mod;
} void pre()
{
fac[] = fac[] = ; inv[] = inv[] = ;
for(int i = ; i < maxn; i ++) fac[i] = fac[i - ] * i % mod;
for(int i = ; i < maxn; i ++) inv[i] = (mod - mod / i) * inv[mod % i] % mod;
for(int i = ; i < maxn; i ++) inv[i] = inv[i] * inv[i - ] % mod;
} signed main()
{
pre(); n = read();
for(int i = ; i <= n; i ++)
{
a[i] = read(), b[i] = read();
f[-a[i] + S][-b[i] + S] ++;
}
m = * S;
for(int i = ; i <= m; i ++)
for(int j = ; j <= m; j ++)
Up(f[i][j], (f[i - ][j] + f[i][j - ]) % mod);
for(int i = ; i <= n; i ++)
{
Up(ans, f[a[i] + S][b[i] + S]);
Up(ans, mod - C( * (a[i] + b[i]), * a[i]));
}
printf("%lld\n", ans * inv[] % mod);
return ;
}
【题解】Atcoder AGC#01 E-BBQ Hard的更多相关文章
- [题解] Atcoder AGC 005 F Many Easy Problems NTT,组合数学
题目 观察当k固定时答案是什么.先假设每个节点对答案的贡献都是\(\binom{n}{k}\),然后再减掉某个点没有贡献的选点方案数.对于一个节点i,它没有贡献的方案数显然就是所有k个节点都选在i连出 ...
- 【题解】Atcoder AGC#16 E-Poor Turkeys
%拜!颜神怒A此题,像我这样的渣渣只能看看题解度日╭(╯^╰)╮在这里把两种做法都记录一下吧~ 题解做法:可以考虑单独的一只鸡 u 能否存活.首先我们将 u 加入到集合S.然后我们按照时间倒序往回推, ...
- 【题解】Atcoder AGC#03 E-Sequential operations on Sequence
仙题膜拜系列...首先我们可以发现:如果在截取了一段大的区间之后再截取一段小的区间,显然是没有什么用的.所以我们可以将操作序列变成单调递增的序列. 然后怎么考虑呢?启示:不一定要考虑每一个数字出现的次 ...
- 【做题记录】AtCoder AGC做题记录
做一下AtCoder的AGC锻炼一下思维吧 目前已做题数: 75 总共题数: 239 每一场比赛后面的字母是做完的题,括号里是写完题解的题 AGC001: ABCDEF (DEF) AGC002: A ...
- AtCoder AGC #2 Virtual Participation
在知乎上听zzx大佬说AGC练智商...于是试了一下 A.Range Product 给$a$,$b$,求$\prod^{b}_{i=a}i$是正数,负数还是$0$ ...不写了 B.Box and ...
- Atcoder Grand Contest 001E - BBQ Hard(组合意义转化,思维题)
Atcoder 题面传送门 & 洛谷题面传送门 Yet another 思维题-- 注意到此题 \(n\) 数据范围很大,但是 \(a_i,b_i\) 数据范围很小,这能给我们什么启发呢? 观 ...
- 题解-AtCoder Code-Festival2017 Final-J Tree MST
Problem \(\mathrm{Code~Festival~2017~Final~J}\) 题意概要:一棵 \(n\) 个节点有点权边权的树.构建一张完全图,对于任意一对点 \((x,y)\),连 ...
- 题解-AtCoder Code-Festival2017qualA-E Modern Painting
Problem CODE-FESTIVAL 2017 qual A 洛谷账户的提交通道 题意:有一个\(n\)行\(m\)列的方格,在边界外有可能有机器人(坐标为\((0,x),(n+1,x),(x, ...
- 题解——ATCoder AtCoder Grand Contest 017 B - Moderate Differences(数学,构造)
题面 B - Moderate Differences Time limit : 2sec / Memory limit : 256MB Score : 400 points Problem Stat ...
随机推荐
- C#第一阶段——结构体
概念理解: 很多相互联系的信息可以组成一个整体.比如一个学生的信息包括学号.姓名.性别.年龄等,它们紧密联系,共同描述学生的状况.在 C#中我们可以把这些紧密联系变量定义成结构体(Str ...
- C++中的引用常见用法
1.引用的内涵 引用就是给变量取外号而已. 2.四种不能使用引用的情况 void &r=x; //不能建立void类型引用 int &&r=x; //不能建立引用的引用 int ...
- 转 Cobar使用文档(可用作MySQL大型集群解决方案)
转自:http://blog.csdn.net/shagoo/article/details/8191346 最近好不容易抽空研究了下Cobar,感觉这个产品确实很不错(在文档方面比Amoeba强多了 ...
- mysql新手进阶03
当年忠贞为国酬,何曾怕断头? 如今天下红遍,江山靠谁守? 业未就,身躯倦,鬓已秋. 你我之辈,忍将夙愿,付与东流? 数据库结构如下: 仓库(仓库号, 城市, 面积) 订购单(职工号, 供应商号, 订购 ...
- Unity Lighting - Choosing a Rendering Path 选择渲染路径(三)
Choosing a Rendering Path 选择渲染路径 Unity supports a number of rendering techniques, or ‘paths’. An i ...
- Dask教程
Dask 介绍 Dask是一款用于分析计算的灵活并行计算库. Dask由两部分组成: 针对计算优化的动态任务调度.这与Airflow,Luigi,Celery或Make类似,但针对交互式计算工作负载进 ...
- 使用深度学习来破解 captcha 验证码(转)
使用深度学习来破解 captcha 验证码 本项目会通过 Keras 搭建一个深度卷积神经网络来识别 captcha 验证码,建议使用显卡来运行该项目. 下面的可视化代码都是在 jupyter not ...
- scatter注记词
say illness thumb ginger brass atom twenty omit fine thought staff poverty
- HADOOP docker(三):HDFS高可用实验
前言1.机器环境2.配置HA2.1 修改hdfs-site.xml2.2 设置core-site.xml3.配置手动HA3.1 关闭YARN.HDFS3.2 启动HDFS HA4.配置自动HA4. ...
- nodejs笔记--express篇(五)
创建一个express + ejs的项目 express -e testEjsWebApp cd testEjsWebApp npm install http://localhost:3000 Usa ...