Atcoder-ABC156-DEF题解
ABC 156
D. Bouquet (朴素求组合数,补集思想)
题意
从 种花里挑,每种花只有一个,最后花的数量不能是 或者 ,求所有方案数
数据范围
思路
- 很容易想到用所有的方案数 - 选 个和 个的方案数
- 太大怎么办? 发现 和 都在 范围内,由组合数公式 , 可以在 时间内求出
- 预处理阶乘和逆元即可
Solution
E. Roaming (组合计数,隔板法)
题意
有 个房间,每个房间 个人,定义一个事件是某个人在 个房间中任意移动一次,但不能待在原地, 询问 次事件后,各房间有多少种情况,答案
数据范围
思路
- 首先题目可以构造出所有房间仍然是 个人的情况,形成环即可。并且题目并不关心人的编号,只关心各房间情况
- 先划分子集,按照最后情况中人数为 的房间的个数进行划分。
- 假设有 个房间为空, 那么要在 个房间内塞 个人且不为空。
- 问题等价于,对于 个小球中间的 个位置放置 个隔板,形成 个不为空的间隔的方案数。
- 选择 个房间方案数为 ,放置隔板方案数为
Solution
F. Modularness (补集,用商判断两数模意义下的大小)
题意
给了长度为 的数组 ,下标从 0 开始。进行 次询问。
每次询问输入 , 有长度为 的数组 ,下标从 0 开始。
其中:
对于每次询问,输出有多少 满足
数据范围
思路
- 从题目可以看出每个 是 的环形前缀和,并且对于每次询问将 并不会影响答案。
- 对于相邻的 其实只差一个 ,如果对答案有贡献则表明 没有增加。
- 然而正面计算其实很困难,考虑求补集,即
- 对于 的情况, 只需要关心 的地方即可
- 对于 的情况,由于每个 ,发生这种情况当且仅当
- 这个题的关键点就是这种局部的累积可以在末尾算出,即数量为
- 是可以在 时间内计算出来的,计算每个 的累加次数即可。注意计算 只需要进行 次加法,代码中的一个细节。
- 时间复杂度
Solution
__EOF__

本文作者:Roshin
本文链接:https://www.cnblogs.com/Roshin/p/ABC156.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Roshin/p/ABC156.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)