NOIP 第十九次

备战 NOIP 2024!

A

容易发现只会操作前 n2 小的数,而需要使它们最终最大值最小,

fi 表示给一个数除以 i 所需的最小代价,这个容易背包预处理出,

注意只需枚举倍数转移,所以复杂度是调和级数的。

二分答案,容易对每个数 ai 求出其至少需要除以 bi,则其所需代价即为 minj=bimfj

检查所需的总代价是否不超过 K 即可。

B

观察可知,对 ci 建 01Trie,对限制 cix<K,考虑 01Trie 上 xK 这个数对应的路径,

对其中 K 上对应位为 1 的边,选择其兄弟边下方的子树,即可选出符合条件的所有 ci

将每个 xK 插入 01Trie,类似线段树分治地,对每个叶子求出以其为路径终点的答案即可。

C

啥玩意,看不懂啊。

D

fS,i 表示限制每个点最多拿到 S 票时,i 的后代有多少个点需要把票投给 i 的祖先,

对于一个 S 容易 DP 出所有 fS,i,于是可以二分出最小的 S 使得 fS,1=0(即存在合法方案),

此时有超过 S 个后代的点一定可以,有少于 S 个后代的点一定不行,只需考虑恰有 S 个后代的点。

可以发现,只有满足:

  1. fS1,u=1:令 u 的后代都投 u,在 S1 的限制下可产生 1 的贡献。
  2. 1u 链上的所有 ifS1,i 均不为 0:这个 1 的贡献不会被中途的 0 吸收。
  3. fS1,1=1:加上这个 1 的贡献后,fS1,1 可变为 0

时,才可能使除 u 外每个点都有不超过 S1 票,点 u 才可以。

posted @   Jijidawang  阅读(10)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示