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

7.29 数论,计数

Color Ball

给定 \(n\) 个筒,第 \(i\) 个筒装有颜色为 \(i\) 的球 \(a_i\) 个,重新排布这些球,使得每个筒中的球个数不变,且没有筒装有颜色与其编号相同的球,求排布方案数。不考虑同色球的差异,但是区分筒中求从下到上的排列顺序。

\(1 \le \sum a_i, n \le 2000\)

考虑直接容斥,设前 \(i\) 个筒,有 \(j\) 个球被放在不合法的位置,用 dp 算容斥系数与方案数的乘积即可。

[NordicOI 2017] Yule Lads

\(n\) 个人与 \(n\) 盏灯,初始状态都为开,人的编号分别为 \(1 \sim n\),他们其中的 \(k\) 个人参与了按灯事件。

我们定义一次按灯事件为一个编号为 \(i\) 的人调整了所有编号为 \(i\) 的倍数的灯的开关状态(关变开,开变关)。

你知道 \(k\) 是多少吗?

\(1 \le n \le 10^{13}\)

设按灯者集合为 \(S\),则我们有:\(\varepsilon(i) = [i = 1] \equiv \displaystyle\sum _{j \in S, j|i} 1 \pmod 2\)。设 \(g_S(n) = [n \in S]\),则 \(g_S * 1 \equiv \varepsilon \pmod {2}\)

两边同时卷上 \(\mu\),由莫比乌斯反演可以得到 $g_S \equiv \mu \pmod {2} $,所以说只需要求 \(\mu(i) \neq 0\) 的个数即可。考虑 \(\mu\) 的含义,容易转化为 \(1 \sim n\) 无平方因子的数的个数。枚举平方因子,套路地容斥计算:

\[\sum _{d=1}^{\lfloor \sqrt n\rfloor}\mu(d) \left\lfloor\dfrac{n}{d^2}\right\rfloor \]

[QOJ14414] Nice Subsequences

难度: 提高

给定长为 \(n\) 的序列 \(a\),求其最长的子序列满足相邻项不互质,并求长度最大时,子序列的个数。

\(1 \le n \le 2 \times 10^5, 1 \le a_i \le 10^6\)

容易发现对于从 \(i\) 转移的时候,若 \(j < k\),且 \(\gcd(a_i, a_j, a_k) = p\),则直接先由 \(i\) 转移到 \(j\) 一定更有。考虑枚举 \(a_i\) 的每一个本质不同的质因子 \(p\),连接边 \(i \to j\),其中 \(j\) 是满足 \(j > i \land p\operatorname{|}a_j\) 的最小值。

然后跑 DAG 上 dp 就行了。

[QOJ18107] Parentheses

对于括号串的编辑如下:

  • 选择区间 \([L, R]\),反转后逐个翻转每个括号,例如左括号翻成右括号。

一个括号串的权值为最少编辑次数,使得括号串合法。对 \(0 \le i \le n\),求长度为 \(n\) 且值为 \(i\) 的不同括号串总数 \(A_i\),计算 \(\displaystyle\sum _{i=0}^n (i+1)A_i\) 的值。

\(n \le 10^6\)

还是用一个经典的转换,设 (\(1\))\(-1\),求前缀和 \(s\),要求 \(s_i \ge 0\),且 \(s_n=0\)

容易发现这个套路我们见过,但好像又不太一样,考虑这个编辑操作实际上是什么:

  • 对于 \(i < l\),没有影响,对于 \(i>r\),都有 \(s_i \gets s_i +2(s_{l-1}-s_r)\)
  • 内部 \(l \le i \le r\):反转+翻转操作等价于 \(s_{l+r-i} \gets s_{l-1}-(s_r-s_{l-1})+(s_{i-1}-s_{l-1}) = (s_{l-1}-s_r)+s_{i-1}\)

相当于将 \([l, r-1]\) 反转后,对于 \(i \in [l, r-1]\) 的每个数加上 \((s_{l-1}-s_r)\)

把问题画在图上(描点 \((i, s_i)\)),令 \(n\) 为偶数,容易发现:

  • 操作为反转该段折线,并对齐到折线起点上。

  • 第一种情况,无位置 \(s_i < 0\),且 \(s_n=0\) 则值为 \(0\)

  • 第二种情况,无位置 \(s_i < 0\),且 \(s_n>0\),则值为 \(1\)

    \(s_n=d\),构造方法是只需要找到高度差为 \(\dfrac{d}{2}\)\(s_{l-1}, s_r\) 即可。令 \(r\)\(n\),一定能找到第一个 \(s_{l-1}=\dfrac{2}{n}\),则其中间的 \(i \in [l,r]\) 都满足 \(s_i > \dfrac{d}{2}\),所以反转后对齐,这一部分不会 \(<0\)

  • 第三种情况,存在位置 \(s_i < 0\),怎么办,我们先找到最小的位置,记为 \(s_x\),则:

    由于 \(s_x\) 已经是最小的,且 \(s_0 = 0\),找到 \(s_{l-1}-s_r=-s_x\) 是一定能够找到的。所以可以通过一次操作使 \(s_x' \ge -s_x\),然后其余 \(< 0\) 的位置就可以通过 \(-s_x \ge -s_i\) 的原理,达到 \(\ge 0\) 的效果,可以一步操作,使这些位置均 \(\ge 0\),且 \(s_n=0\).所以最多操作两次。而操作一次当且仅当 \(s_x\) 是所有 \(<0\) 中最靠右的,容易发现必然为 \(s_n\)

简单统计即可。

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

相关文章:

  • 2026PPT转PDF不压缩画质工具合集:电脑软件、在线网站、小程序高清转换教程 - 工具软件使用方法推荐
  • HiLS-Attention-7B vs 传统模型:长文本任务性能对比评测
  • 大模型内容采信最容易踩的8个技术坑,2026实测避坑指南 - 曌选科技官方账号
  • 天下游APP怎么样?虚拟定位工具深度体验与功能解析
  • tech-pdai-spring-demos完全指南:Spring Framework5与SpringBoot 2.5.x实战入门到精通
  • 3分钟实现Windows本地实时语音转文字:TMSpeech全功能指南
  • WAIC 2026闭幕:机器人从跳舞变成拧螺丝
  • Demeteorizer Windows支持指南:解决Node.js旧版本兼容性问题
  • Soar社区贡献指南:从提交Bug到PR,新手也能参与的开源项目
  • FFTformer-GoPro-fp32实战案例:从模糊视频到清晰画面的完整处理流程
  • 从0到1开发习惯打卡APP:flutter-checkio的Bloc状态管理实现原理
  • Android Audio Latency测试
  • 2026 牛客暑期多校训练营 4 F. 23 子序列(值域 DP + 离线区间询问)
  • 小龙虾Skill 全局共享配置总结
  • 2025年GEO优化公司排行榜:五维能力测评与落地效果全景解析 - 品牌前沿专家
  • 2026Word减小文件体积最全实用操作指南 - 工具软件使用方法推荐
  • ITMO大学等联手打造:一个能用小模型干大事的AI知识图谱引擎
  • 为什么选择multiyolov5?目标检测+语义分割双任务模型的性能优势与实战案例
  • 【Java基础】1. 写一个Hello World
  • Jenkins扩展开发指南:深度定制你的自动化平台
  • 无锡鑫海干燥粉体设备有限公司:2026年螺旋上料机市场趋势下的合理选择 - 优企名品
  • Tarnhelm高级玩法:自定义正则表达式规则,解决复杂链接净化难题
  • 5分钟掌握终极免费音乐解锁工具:浏览器本地解密完整指南
  • 老铺黄金,通过了史上最强市场压力测试
  • 2026年GEO口碑好的公司有哪些?内行人推荐这3家 - 米諾
  • 2025年十大GEO优化公司深度盘点:从选型方法论到实战落地的全景指南 - 品牌前沿专家
  • LVS(Linux Virtual Server)全面解析与实验手册:集群概念、工作模式与调度算法
  • Django-Vue3-Admin插件市场:5款必备插件提升开发效率
  • 弃铺量,寻GEO长期流量
  • Nebula Console完整指南:如何快速掌握图数据库命令行操作