当前位置: 首页 > news >正文

[AGC001E] BBQ Hard 分析

题目概述

给出 \(n\)\(a_i,b_i\),其中 \(a_i\) 代表 \(0\) 的个数,\(b_i\) 代表 \(1\) 的个数,让你求对于所有的 \((i,j)(i<j)\) 这些 \(0,1\) 组合起来的本质不同的个数之和。

分析

思维好题!

首先我们不难想到卡特兰数的方法去求他后面这些东西。换言之,题目转化为求:

\[\sum_{i=1}^n\sum_{j=i+1}^n\binom{a_i+b_i+a_j+b_j}{a_i+a_j} \]

显然这个可以变成:

\[\frac 1 2\left(\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{2a_i+2b_i}{2a_i}\right) \]

考虑怎么求前面的那一个。

我们注意到我们的本质是从 \((0,0)\rightarrow (a_i+a_j,b_i+b_j)\)

一个巧妙的转化:将他变成 \((-a_i,-b_i)\rightarrow(a_j,b_j)\)

然后就很简单了,这是一个组合数递推问题,将一开始赋为 \(1\) 即可。

然后这题目就做完了。

代码

时间复杂度 \(\mathcal{O}(n+\max a_i^2)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#define int long long
#define N 200005
using namespace std;
const int mod = 1e9 + 7;
int jc[N],inv[N];
int C(int a,int b) {if (a < 0 || b < 0 || a < b) return 0;return jc[a] * inv[b] % mod * inv[a - b] % mod;
}
void pls(int &x,int y) {(x += y) %= mod;
}
int n,a[N],b[N],f[4005][4005];
signed main(){jc[0] = inv[0] = jc[1] = inv[1] = 1;for (int i = 2;i < N;i ++) jc[i] = jc[i - 1] * i % mod,inv[i] = (mod - mod / i) * inv[mod % i] % mod;for (int i = 2;i < N;i ++) inv[i] = inv[i - 1] * inv[i] % mod;cin >> n;int delt = 2000,ans = 0;for (int i = 1;i <= n;i ++) scanf("%lld%lld",&a[i],&b[i]),f[-a[i] + delt][-b[i] + delt] ++,ans += C(2 * a[i] + 2 * b[i],2 * a[i]),ans %= mod;for (int i = 0;i <= 4000;i ++)for (int j = 0 + (i == 0);j <= 4000;j ++) {if (i) pls(f[i][j],f[i - 1][j]);if (j) pls(f[i][j],f[i][j - 1]);}ans = (-ans + mod) % mod;for (int i = 1;i <= n;i ++) ans = (ans + f[a[i] + delt][b[i] + delt]) % mod;cout << ans * (mod + 1) / 2 % mod;return 0;
}

后记

最近打 ABC 有类似题:abc432_g。

但是值域很大,不能用这种方法做,只能考虑 poly trick。

http://www.jsqmd.com/news/42154/

相关文章:

  • logicFlow ,画布节点自定义
  • 哈希从入门到入土『给学弟学妹们讲课用的』
  • 20232303 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • 学校真好!
  • NOIP2025模拟9
  • .net 8+, 类库无法引用 WebApplication 的解决方案
  • 网络分析模型七
  • 2025-11-16
  • iOS移动端H5键盘弹出时页面布局异常和滚动解决方案 - 详解
  • P14092 [ICPC 2023 Seoul R] M. S. I. S.
  • temperature、top_p、top_k
  • PyCharm gitee: Git Pull Failed
  • python方便的桌面应用.customtkinter
  • 红队、蓝队与紫队:网络安全攻防演练的三大支柱
  • 2025年11月副业平台评价榜:零门槛生态对比助你安全增收
  • 全球云服务震荡:Amazon Web Services (AWS) 出现大规模故障 多项线上服务受冲击 - 实践
  • 调整电话交换机 3CX 对接微软 Teams 直接路由
  • 20232406 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • 20232315 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • spark启动方式
  • 2025.11.16模拟赛
  • Pycharm为什么会自动创建__pycache__
  • 20232325 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • 12.docker swarm - 指南
  • 山东大学 计算机图形学实验 二维网格剖分 Catmull-Clark算法
  • 从Ubuntu安装Harbor故障到了解AppArmor 与 Seccomp的思考
  • 什么是“组态路径”?
  • 2025年11月防冻液厂家推荐榜:五家对比与性能评价一览
  • 深入探索剖析 JVM 的启动过程