Pjudge #21741. 【NOIP Round #5】青鱼和区间 题解

news/2025/11/18 20:56:44/文章来源:https://www.cnblogs.com/Scarab/p/19239304

Description

鱼王青鱼的 AI 不愿意进行 996 的工作,于是要求青鱼先和它玩一个游戏。

AI 生成了 \(n\) 道题,编号为 \(1, 2, \dots, n\)。现在 AI 心里选择了其中一道题,但青鱼不知道这是哪一题。

青鱼可以向 AI 询问若干个问题,每个问题形如:给定 \(l, r\) 满足 \(1 \le l \le r \le n\),询问这道题的编号是否在 \([l, r]\) 中。

如果青鱼能够通过同时询问这些问题唯一确定这道题的编号,那么青鱼就赢了。否则 AI 就赢了。

显然,身为鱼王,青鱼的智商不输 AI。因此,你可以认为青鱼和 AI 都是绝顶聪明的。

现在青鱼抓住了你,并要求你计算出青鱼有多少种问问题的方案使得他一定能赢。其中两种方案不同,当且仅当存在一个区间 \([l, r]\) 在其中一种方案中被询问,而在另一种方案中没有。

另外,青鱼施行仁政,所以他不会太为难你,只需要你给出答案对大质数 \(P\) 取模的结果。

\(1\leq n\leq 300\)

Solution

首先直接是不好计算的,考虑容斥,即钦定一些等价类,求使得每个等价类内部的的编号被覆盖的区间集合相等的方案数。

\(b_i\) 表示 \(i\) 所在的等价类编号,如果存在 \(i<j<k<l\),且 \(b_i=b_k,b_j=b_l\),则所有包含 \(i\) 的区间也包含 \(k\),也就包含 \(j\)\(l\),所以 \(i,j,k,l\) 的实际覆盖集合也相同,把它们的等价类合并后方案数也一样。

由于直接钦定等价类大小后容斥系数并不是 \((-1)^{size-1}\),就无法用到上面的结论了。

考虑将钦定等价类改成钦定若干条边 \((i,j)\),让 \(i\)\(j\) 被覆盖的区间集合相同。容斥系数是 \((-1)^{边数}\)

那么根据上面的结论,如果 \((i,k)\)\((j,l)\) 有边,且 \((j,k)\) 没有边,那么加上 \((j,k)\) 后容斥系数变为相反数,方案数不变,抵消了!

所以我们钦定的边要么包含,要么不交(可以在端点上交)。


然后钦定所有不被包含的边后,将其称为极长边,将相邻的极长边合并成一个块。那么每条边内部(不包含两端点)的边就互相独立了,而跨过这些极长边的区间一定要包含若干个完整的块,这些区间显然是可以随便选的。

根据上面的做法就可以设计状态了。

\(f_i\) 表示有 \(i\) 个点,钦定 \((1,i)\) 有边,只计算 \([2,i-1]\) 内部的边的贡献和,\(g_i\) 表示 \(i\) 个点,没有任何限制的贡献和。

转移的时候就再设一个二维状态 \(h_{i,j}\) 表示 \(i\) 个点,有 \(j\) 个块的贡献和,再乘上跨块的方案数即可。

具体细节见代码。

时间复杂度:\(O(n^3)\)

Code

#include <bits/stdc++.h>// #define int int64_tconst int kMaxN = 305;int n, mod;
int f[kMaxN], g[kMaxN];// f[n] : n 个点,1 和 n 有边,且不能有 [1, n] 这个区间的贡献之和int qpow(int bs, int64_t idx = mod - 2) {int ret = 1;for (; idx; idx >>= 1, bs = (int64_t)bs * bs % mod)if (idx & 1)ret = (int64_t)ret * bs % mod;return ret;
}inline int add(int x, int y) { return (x + y >= mod ? x + y - mod : x + y); }
inline int sub(int x, int y) { return (x >= y ? x - y : x - y + mod); }
inline void inc(int &x, int y) { (x += y) >= mod ? x -= mod : x; }
inline void dec(int &x, int y) { (x -= y) < 0 ? x += mod : x; }
inline int getop(int x) { return (~x & 1) ? 1 : (mod - 1); }void dickdreamer() {std::cin >> n >> mod;f[1] = 1;static int tmp[kMaxN][kMaxN];memset(tmp, 0, sizeof(tmp));tmp[1][1] = 1;for (int i = 2; i <= n; ++i) {// static int tmp[kMaxN][kMaxN];// memset(tmp, 0, sizeof(tmp));// tmp[1][1] = 1;// for (int j = 2; j <= i; ++j) {//   for (int k = 1; k <= j - 1; ++k) {//     inc(tmp[j][k + 1], tmp[j - 1][k]);//     for (int x = 1; x <= j - k; ++x)//       dec(tmp[j][k], 1ll * tmp[j - x][k] * f[x + 1] % mod);//   }// }for (int j = std::max(i - 1, 2); j <= i; ++j) {std::fill_n(tmp[j], j + 1, 0);for (int k = 1; k <= j - 1; ++k) {inc(tmp[j][k + 1], tmp[j - 1][k]);for (int x = 1; x <= j - k; ++x)dec(tmp[j][k], 1ll * tmp[j - x][k] * f[x + 1] % mod);}}for (int j = 1; j <= i; ++j) {int val = tmp[i][j];if (j >= 3) val = 1ll * val * qpow(2, (j - 2) * (j - 1) / 2) % mod;inc(f[i], val);// [1, i] 没有 (1, i) 这条边inc(g[i], 1ll * tmp[i][j] * qpow(2, j * (j + 1) / 2) % mod);// [1, i] 有 (1, i) 这条边dec(g[i], 1ll * tmp[i][j] * qpow(2, std::max(j - 2, 0) * (j - 1) / 2 + 1) % mod);}// std::cerr << f[i] << '\n';}std::cout << g[n] << '\n';
}int32_t main() {
#ifdef ORZXKRfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);
#endifstd::ios::sync_with_stdio(0), std::cin.tie(0), std::cout.tie(0);int T = 1;// std::cin >> T;while (T--) dickdreamer();// std::cerr << 1.0 * clock() / CLOCKS_PER_SEC << "s\n";return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/969332.shtml

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

相关文章

11月18日

今日进度 (1)Commit 记录 •陈鉴祥:完成 agent-svc 忙闲状态查询,全量测试通过 •何绍斌:优化支付表索引,完成数据一致性测试 •张廷智:编写数据格式化工具,完成报表页联调 •郑权:收集测试用例,组织团队交叉…

UE4/UE5反射系统动态注册机制解析 - 实践

UE4/UE5反射系统动态注册机制解析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

完全平方和的推广

平方和公式 \[(\sum_{i=1}^n A_i)^2 = \sum_{i=1}^n A_i^2 + 2\sum_{1 \leq i < j \leq n} A_i A_j \]核心是完全平方公式的推广,用“多项式展开逻辑”即可理解。 1. 从简单到复杂推导 (1)2个数的情况(完全平方…

三维偏序整体二分?

基于整体二分的CDQ分治实现? 众所周知的是三维偏序可以使用整体二分解决,但是今天我研究了一下,发现这个整体二分并不是一般意义下的整体二分,而是CDQ分治的一种类似整体二分的实现。 一般而言,整体二分指的是平行…

做题随笔:P3403

Solution 这里给出了一种不使用最短路的优化算法,可以优化到 \(O(x)\),而且出奇的直观、好写。同见于 oi-wiki。(其实相关部分是我写的) 题意 原题链接 给定 \(x,y,z,h\),求 \(ax+by+cz=h\) 的非负整数解 \((a,b,…

2025.11.18

今天上课,拿快递,吃饭,睡觉,买水果,回宿舍。

《从纪律委员到AI元人文开放者》

《从纪律委员到AI元人文开放者》 作者:岐金兰 日期:2025年11月18日 三十年前,我站在教室的讲台上,手里拿着纪律记录本。那时的我,是班级秩序的守护者,用稚嫩的肩膀承担着维持纪律的责任。谁能想到,三十年后,我…

MEMS与CMOS的3D集成技术研究进展 - 指南

MEMS与CMOS的3D集成技术研究进展 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

CSS学习笔记(六):CSS预处理器 - 实践

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

「Solution」AGC008F Black Radius

大战 6h 看题解天塌了。很好玩的题目!没有想到题解区做法,这里给一个鏖战许久的容斥做法。由于写的太多所以单独成篇了。 这个关键点、距离等限制有一种 [十二省联考 2019] 希望 的既视感(虽然这个题更早)。直接算…

linux c web

您提到的“Linux C web”可能有多种含义,以下是几种可能的解释和相关建议:1. Linux 内核开发(C 语言) 如果您是在 Linux 内核开发中使用 C 语言,以下是一些常用命令和工具: 常用命令:gcc:编译 C 代码gcc -o my…

2025 年 钢丝网/钢骨架 塑料复合管厂家权威推荐榜/哪家好/有实力/可靠的/排名企业-江苏狼博管道制造有限公司

2025 年 钢丝网/钢骨架 塑料复合管厂家权威推荐榜/哪家好/有实力/可靠的/排名企业-江苏狼博管道制造有限公司** 2025 年 钢丝网/钢骨架 塑料复合管厂家权威推荐榜**钢骨架塑料复合管 钢丝网骨架塑料复合管 钢骨架聚乙…

CSS实现修改CheckBox样式

CSS实现修改CheckBox样式checkbox的代码:<div><input type="checkbox" id="custom-checkbox" class="custom-checkbox"><label for="custom-checkbox">&l…

人工智能之编程进阶 Python高级:第二章 面向对象

人工智能之编程进阶 Python高级:第二章 面向对象人工智能之编程进阶 Python高级 第二章 面向对象@目录人工智能之编程进阶 Python高级前言一、面向对象核心概念二、定义类和创建对象1. 基本语法2. __init__ 方法三、封…

OI vs Group Theory, Do You Guys Know?

TBD作者:ShaoJia,欢迎分享本文,转载时敬请注明原文来源链接。

2025年11月穿戴式吸奶器,电动吸奶器,百元吸奶器品牌测评排名,高性价比选购指南!

2025年11月穿戴式吸奶器、电动吸奶器、百元吸奶器品牌测评排名与高性价比选购指南在2025年11月,市面上的吸奶器产品琳琅满目,对于众多孕产妈妈来说,如何挑选到一款高性价比的吸奶器成为了一大难题。今天,我们就来重…

2025年11月百元吸奶器,静音吸奶器,便携吸奶器品牌测评排名,高性价比选购指南!

2025年11月百元吸奶器选购指南:聚焦卡乐怡等优质品牌在2025年11月,如果您正在为选择一款合适的吸奶器而烦恼,那么这篇测评排名及选购指南将为您提供有价值的参考。在众多吸奶器品牌中,卡乐怡品牌隶属的汕头市汇亨淇…

Q:R2R(Row-to-Row)映射 XML 是数据同步“源表字段→目标表字段” 的转换规则基础教程。

Q:R2R(Row-to-Row)映射 XML 是数据同步“源表字段→目标表字段” 的转换规则基础教程。Posted on 2025-11-18 20:26 三年三班王小朋 阅读(0) 评论(0) 收藏 举报R2R 映射 XML 语法速查表 一、核心节点层级(必记…

2025年11月免手扶吸奶器,穿戴式吸奶器,百元吸奶器品牌测评排名,清洁便捷优选!

2025 年 11 月免手扶吸奶器,穿戴式吸奶器,百元吸奶器品牌测评排名,清洁便捷优选!在母婴市场中,吸奶器是众多妈妈们的刚需产品。随着科技的发展,免手扶吸奶器、穿戴式吸奶器等新型产品不断涌现,为妈妈们带来了更…

【Azure Developer】解决在中国区 Microsoft Graph 命令Get-MgUserAuthenticationPhoneMethod 不可用的问题

问题描述 使用PowerShell Microsoft Graph 命令来获取用户认证的电话信息时,发现 Get-MgUserAuthenticationPhoneMethod 命令在中国区 Azure上不可用。报错:Get-MgUserAuthenticationPhoneMethod : Resource not fo…