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

20251117~20251123NOIP模拟赛

20251117NOIP模拟赛

A:

题目大意:

\(n\) 个点,每个点有 \(a_{i}\) 个孔,你现在要在这 \(n\) 个点中连 \(n - 1\) 条边,使得他们联通。
每条边连接两个孔,每个孔最多连接 \(1\) 条边,两种连接方案相同,当且仅当每条边连接的两个空不同。
问不同的方案数,模数给定。
\(n \le 10^6, a_{i} \le 10^9\)

解题思路:

看到生成树计数,往 prufer 序列上想。
但这个题对于第 \(i\) 个点来说,如果它的度数为 \(d_{i}\),那么内部的方案有 \(\frac{a_{i}!}{(a_{i} - d_{i})!}\)
那么对于一个度数为 \(d_{i}\) 的节点 \(i\),它在 prufer 序列中出现了 \(d_{i} - 1\) 次,对于 prufer 的方案数相当于 \(\binom{n - 2}{d_{1} - 1,d_{2}-1 \dots d_{n} - 1}\)
那么我们现在就有了式子:

\[\sum_{\sum_{d_{i} - 1} = n - 2,d_{i} > 0} \prod_{i = 1}^{n} \frac{a_{i}!}{(a_{i} - d_{i})!} \binom{n - 2}{d_{1} - 1,d_{2}-1 \dots d_{n} - 1} \]

先将后面的组合数拆开:

\[\sum_{\sum_{d_{i} - 1} = n - 2,d_{i} > 0} \prod_{i = 1}^{n} \frac{a_{i}!}{(a_{i} - d_{i})! \times (d_{i} - 1)!} \times (n - 2)! \]

然后我们发现中间的数和标准的组合数有 \(O(1)\) 的偏差,所以考虑变一下,变成一个组合数。

\[\sum_{\sum_{d_{i} - 1} = n - 2,d_{i} > 0} \prod_{i = 1}^{n} a_{i} \frac{(a_{i} - 1)!}{(a_{i} - d_{i})! \times (d_{i} - 1)!} \times (n - 2)! \]

\[\sum_{\sum_{d_{i} - 1} = n - 2,d_{i} > 0} \prod_{i = 1}^{n} a_{i} \binom{a_{i} - 1}{d_{i} - 1} \times (n - 2)! \]

因为我们知道了 \(d_{i} - 1\) 之和 为 \(n - 2\),然后我们后面的式子还是连乘的形式,所以考虑范德蒙德卷积的扩展形式。

\[\sum_{\sum_{d_{i} - 1} = n - 2,d_{i} > 0} \prod_{i = 1}^{n} a_{i} \binom{\sum_{i = 1}^{n} a_{i} - n}{n - 2} \times (n - 2)! \]

\[\sum_{\sum_{d_{i} - 1} = n - 2,d_{i} > 0} \prod_{i = 1}^{n} a_{i} \frac{(\sum_{i = 1}^{n} a_{i} - n)!}{(n - 2)! \times (\sum_{i = 1}^{n} a_{i} - n - n + 2)!} \times (n - 2)! \]

\[\sum_{\sum_{d_{i} - 1} = n - 2,d_{i} > 0} \prod_{i = 1}^{n} a_{i} \frac{(\sum_{i = 1}^{n} a_{i} - n)!}{(\sum_{i = 1}^{n} a_{i} - n - n + 2)!} \]

那么这个式子就能 \(O(n)\) 算了。

没想到的点:

  1. 不熟悉 prufer 序列,不知道 prufer 的原理,对生成树计数不敏感。
  2. 不熟悉范德蒙德卷积,稍微扩展一下就不会了,看到和固定,求组合数乘积也要敏感。

T3:

题目大意:

有两天,第一天有 \(n\) 个人,第 \(i\) 个人在 \(s_{i}\) 时刻进入同一个房间,在 \(t_{i}\) 时刻离开,如果两个人在同时在房间里,那么他们会互相加对方的好友。
第二天每个人会把自己的明信片挂到网站上,每个人可以看到/转发 好友自己发的/转发的明信片,问每两个人都看到对方的明信片最小的转发次数。
\(n \le 2 \times 10^5\)

解题思路:

这种题,它并不特别关心标号,所以我们可以先排序,所以我们先按 \(l\) 从小到大排序。
由于注意到人与人之间的明信片互不影响,所以将每个人单独考虑,即让其他人都看到这个人明信片的最小转发次数。

而对于第 \(i\) 个人来说,\(1 \sim i - 1\) 不会被 \(i + 1 \sim n\) 影响,所以我们可以直接设 \(f_{i}\) 表示前 \(i\) 个,由 \(i\) 转发,最少需要多少个转发。
转移就是枚举上一个转发得位置,BIT 优化。
那么设 \(g_{i}\) 表示 \(i\) 转发,让 \(i \sim n\) 都收到最少多少转发。
同理,也是 BIT。

但我们发现,\(1 \sim i - 1\) 中可能会出现一个超级长的,这样他就影响到 \(i + 1 \sim n\) 这部分了。
然而,能影响到后面的线段显然只有一个,那就是前面转发的人中 \(r\) 最大的。
那么考虑它要满足什么条件,以及对答案的贡献是什么。

条件显然易见,要求完全覆盖 i,贡献就是 \(f_{j}+g_{j}-1\),二维数点即可。
但是注意一个地方,我们之前在排序的时候,只要求了 \(l\),但这里我们为了好写,当 \(l\) 相同的时候,要按 \(r\) 从大到小。
\(O(n \log n)\)

http://www.gsyq.cn/news/56806.html

相关文章:

  • Java的第一个程序
  • 20232310 2025-2026-1 《网络与系统攻防技术》实验七实验报告
  • 完整教程:基于Python楼王争霸劳动竞赛数据处理分析
  • 【springboot线上零食舱系统】(免费领源码+演示录像)|可做计算机毕设Java、Python、PHP、小程序APP、C#、爬虫大数据、单片机、文案 - 详解
  • 2025.11.21博客
  • NVM 与 单节点下PM2进程守护 安装配置以及使用教程完整指南(含 Node.js 环境搭建)
  • 北大六院的诊断
  • django项目前端模版文件,在pycahrm无法使用ctrl+alt+l格式化代码的解决办法
  • QT:Qt5.14向文档输出表格--编译异常信息
  • 《程序员修炼之道》阅读笔记5
  • 2025.11.21 - A
  • 2025年新版ADB工具箱下载+驱动+ADB指令集+fastboot刷机ROOT程序
  • 与括号序列相关的 DP 笔记
  • 题解:SP5830 ALTPERM - Alternating Permutations
  • Dify异步接口调用优化实践:解决长时任务处理与网络超时疑问
  • 【251121】CF2171 Div.3 vp 总结
  • OI 笑传 #32
  • PyOpenGL实现Bresenham算法
  • nju实验七 状态机及键盘输入
  • 2025-11-21 XQQ NOIP Round 1 hetao1733837的record
  • Mozilla CI日志中暴露微软x-apikey的安全事件分析
  • Gephi中MySQL数据的节点和边如何设置
  • Gephi对MySQL数据的导入导出有何支持
  • P6727 [COCI 2015/2016 #5] OOP
  • 智能制造(MOM)-详细设计 - 智慧园区
  • STM32中断、NVIC、EXTI
  • 深入解析:自动化文件管理:分类、重命名和备份
  • 详细介绍:Rust 性能优化指南:内存管理、并发调优与基准测试案例
  • pyppeteer: 得到当前运行中的浏览器
  • 基于单片机的篮球比赛计时与比分控制系统设计 - 详解