[AGC001E] BBQ Hard 分析

news/2025/11/16 22:07:31/文章来源:https://www.cnblogs.com/high-sky/p/19229187

题目概述

给出 \(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.mzph.cn/news/967406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

logicFlow ,画布节点自定义

class CustomRectNode extends RectNode {/*** @description 重写此方法,自定义节点形状。* @returns VNode*/getShape() {const { model } = this.propsconst { x, y, width, height, radius } = modelconst style =…

哈希从入门到入土『给学弟学妹们讲课用的』

哈希是什么? 哈希本质就是一种映射,-

20232303 2025-2026-1 《网络与系统攻防技术》实验五实验报告

20232303 2025-2026-1 《网络与系统攻防技术》实验五实验报告

学校真好!

致敬《学校真是太棒了》。%%%%%%%%%%%%%%你们学校会在宿舍屎漫金山吗? 谁在宿舍写屎山? 我们高一尚慧楼会!西湖的水 我的泪 我情愿和你化作一团火焰Recently,尚慧楼一楼西侧的厕所蓄水池正式开启了回馈老玩家福利!…

NOIP2025模拟9

T1:卡门(kamen) 思路: 模拟。 据说可以用线段树和分块,但是咱还是选择最朴素的叽里呱啦一大坨子的预处理方式。 可以发现 \(c\) 极小,所以我们可以预处理出从第 \(x\) 列丢下去的石头能掉到的位置。 但是这里的部…

.net 8+, 类库无法引用 WebApplication 的解决方案

WebApplication 在 Microsoft.AspNetCore.Builder 下; 但是 nuget 上的 Microsoft.AspNetCore 只有 2.3 版本,导致无法在这个包中找到可用的 WebApplication 。 解决方法一:直接引用本地环境中的程序集 nuget 上有个…

2025-11-16

Problem - 1924A - Codeforces(构造) 要判断s字符串是否满足是所有前k个字符的子数组 则需要把s分段,每一段都包含前k个字符 如果段数>=n长度,即满足 否则,找最后一段不满足的字符 构造一个不满足的字符串 #in…

iOS移动端H5键盘弹出时页面布局异常和滚动解决方案 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

P14092 [ICPC 2023 Seoul R] M. S. I. S.

这个结论还是太牛逼了。 首先你考虑一个事情,假设我目前存在一个重排列的方案,存在一列 \(i\),使得 \(a_i, b_i\) 都不选进答案,那么必然可以将其中较大的那一个移动到一个合适的位置使得获得 \(\max(a_i, b_i)\) …

【具身智能科普】表格分析核心概念、技术体系、应用场景落地、商业化等 - 指南

【具身智能科普】表格分析核心概念、技术体系、应用场景落地、商业化等 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-fa…

深入解析:Hadoop 集群自动化运维实战

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

temperature、top_p、top_k

temperature、top_p、top_k 大模型问答的交互流程​ 图片来源:阿里大模型ACP考试课件 temperature temperature和top_p的调整是发生在大…

PyCharm gitee: Git Pull Failed

PyCharm gitee: Git Pull Failed Your local changes will be overwritten by merge. Commit, stash, or revert them to proceed.View them Local Changes Prevent from Pull解决方法: 在资源管理器中,手工删除文…

【MySQL】实操: 慢SQL优化

MySQL的三种优化点:深分页、文件排序、小表驱动大表从数据库角度看,每个 SQL 执行都需要消耗一定 I/O 资源,SQL 执行的快慢,决定了资源被占用时间的长短。假如有一条慢 SQL 占用了 30%的资源共计 1 分钟。那么在这…

PyCharm gitee: Merge with strategy ort failed.

__pycache__/views.cpython-36.pyc SPDmanage/__pycache__/views.cpython-38.pyc SPDmanage/migrations/__pycache__/0001_initial.cpython-36.pyc SPDmanage/migraMerge with strategy ort failed.参考这个解决: (1…

NCA和fsQCA

NCA和fsQCA方法 核心任务 比喻 输出形式 能否告诉你“要多高才够”?NCA 检查“单因素”是不是必要条件——“没它就不行” 烤蛋糕不能没有鸡蛋 一张“天花板线”图:横轴=条件水平,纵轴=结果水平 ✅ 能定量给出“鸡蛋…

获取数据,转换成JSON,返回到前端页面

来源:豆包 获取数据,转换成JSONimport com.alibaba.fastjson.JSON; import java.io.FileWriter;public class FastJsonExport {public static void main(String[] args) throws Exception {User user = new User();u…

2025年11月副业平台推荐榜:五强生态模式深度解析

副业需求正在从“赚点零花钱”升级为“可复制的管道收入”。2025年第三季度,国家发改委《灵活就业质量监测报告》显示,已有1.9亿劳动者把副业视为收入“第二曲线”,其中62%的人把“平台是否提供完整成长路径”列为首…

PyCharm gitee: ignore

Pycharm-->File-->Settings-->Plugins-->搜索ignore-->点击安装-->重启Pycharm 使用ignore: 项目-->右键-->New-->.ignore file-->.gitignore file(Git)