CF1601 题解

纪念一下场切 5 题。

A

给定序列 a,一次操作可选 k 个数,同时减去它们的按位与。问有多少个 k 能把 a 全消为 0n105

对于一个位,1 的个数的变化量必为 k 的倍数。所以 k 要是每一位 1 的个数的 gcd 的因数。

B

青蛙跳井,初始在地下 n 米。在地下 i 米的位置白天可以向上跳 0ai 米,晚上会下滑 bi 米。n105

法一:拆点 BFS + ST 表优化建图。O(nlogn)

把一个点拆成白天和夜晚点。问题在 ai 条边会爆。上个 ST 表优化建图即可,复杂度 O(nlogn)

法二:观察。O(n)

注意到每一天能到达的位置一定是一个后缀。令 toi=i+biai+bimni=minj=in(toj)。那么从后缀 [pos,n] 能跳到的最高距离是 [mnpos,n]。额外记录 numpos 表示 [pos,n] 里取到 mnpos 的位置。即可 O(n)

C

给定两个序列 a,b,将 b 以任意顺序插入 a 的任意位置。最小化结果序列的逆序对。

容易观察到 b 是以从小到大的顺序排进 a 里的。分治求 b 的最优位置。

D

一个关卡,初始难度 d。有 n 个人,技术 si、整洁度 ai。若 dsi,就可以打关;打完关卡后,会让难度变成 max(d,ai)。求排列方式使得打关人数最大。

s<d 的人去掉,然后剩下人按 max(s,a) 从小到大排序,相同的按 s 从小到大排序。

贪心的证明:分类讨论 max(si,ai)=si/ai 的情况。关键在于每个人的贡献都是 1。可以导出 "如果要让一个人选,必然需要至少一个人不选,而且选了他之后难度不会下降"。

E

一所不知名大学的学生没有体育课。这就是为什么他们中的q个人决定自己去附近的健身房。健身房共开放n天,并设有门票系统。在第i天,一张门票的费用等于ai,您被允许每天可以购买一张以上的门票。

您可以在第i天或之后的任何一天激活已购买的门票。每张已激活的门票仅在k天内有效。换句话说,如果您在第t天激活了门票,它将仅在第t天、第t+1,...,第t+k1天有效。

您现在知道第j个学生想要在从liri的每一天都去健身房。而每个学生将在第i(liiri)通过下列的步骤进入健身房:

1.一个学生来到健身房门口的售票处,用ai的价格购买几张门票。(ai可能为零)

2.如果这个学生至少有一张已激活的有效门票,便可直接进入健身房。否则,这个学生必须激活一张今天或是更早时候购买的门票才能进入健身房。

注意,每个学生从第lj天开始就会去健身房,所以每个学生必须在第lj天购买至少一张门票。

请帮助学生们计算去健身房的最低花费。

n105


bi=minj=iki(aj),可以用 ST 表算。
对于一次询问,答案为 al+bl+k+min(bl+k,bl+2k)+min(bl+k,bl+2k,bl+3k)+

问题转化为静态查询一个区间的前缀最小值的和。按模 k 余数把 b 分类,问题可以在单独一类 b 里解决。下设 c 为一类下标模 k 相等的 bi

考虑 DP。令 fi 表示 ci+min(ci,ci+1)+,记 nxtii 之后第一个 <ci 的位置,有 fi=fnxti+(nxtii)ci。容易递推。

对于询问,记 pclcr 内的最小值位置,答案为 flfp+cp(rp+1)

posted @   FLY_lai  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示