znstz的博客

博客

Public Round #10 验题人题解

2023-07-18 20:46:58 By znstz

训练

不能掉到 0 以下,这个限制特别烦。如果某一天掉到 0 以下,那么这一天之前所做的练习都是无效的。也就是说一定存在一个最优方案,在开始练习一个技能之后,一定不会掉到 0 以下。

dp(i,0/1/2,d1,d2) 表示,考虑前 i 天,第 i 天练习了什么技能,另外两个技能分别有多少天没有练习。一个非常直观的感觉,d1,d2 不会太大,是 O(A) 级别的,A 是值域。感性理解就是,超出这个级别会导致掉下来太多,而在这一段没有练习的时间的正中间强制练习这个技能,会取得 A 的收益,复杂度 O(nA),注意一下要处理一些技能没开始练习的情况。

打摆

将图看做 100 个点的完全图,每条边染成了黑色或白色。

先取出任意五个节点,解出这个大小为 5 的团。每三个询问一下,得到了 10 个未知数和 10 个方程,把它解出来。由于未知数不多,可以暴力枚举。

每次选一个点 u 加入团,将团中的节点随机打乱,得到排列 p1,p2,,pk,令 i=1,询问 (u,pi,pi+1),将其减去边 (pi,pi+1) 的贡献,有两种情况。

  • (u,pi)(u,pi+1) 同色,我们可以知道具体的颜色,令 i=i+2,重复此过程。
  • (u,pi)(u,pi+1) 异色,令 i=i+1,重复此过程直到找到一对同色边,找到之后可以推出前面的一些边。

有一些细节:如果找完了都没有找到同色边,那么可以任意取一个 j,询问 (u,pj,pj+2)(u,p1,pj),得到 (u,pj)(u,pj+2) 的颜色,由于 k5,一定能找到一个合适的询问。

我们已经将团里面的点随机打乱了,每次问到同色的概率至少是 0.5。即,一次询问在最坏情况下,有 0.5 的概率确定两条边,有 0.5 的概率确定一条边,期望确定 1.5 条边,询问次数期望大约为 n22×1.5=n23

抄袭

考虑 2-sat,有 2n0/1 变量 x0,x1,,x2n1,每个变量表示 x 轴上的一个点所在连线的方向,是向上还是向下的。想到这个,剩下的通过手玩都可以解决。

li,ri 表示颜色 i 靠左,靠右的两个点的位置。

  • li<lj<rj<ri,即区间包含,可以得到 xlj=xrj
  • li<lj<ri<rj,即区间相交,可以得到 xljxri

手玩 24 种情况会发现是必要且充分的,构造方案可以对每个 li 上的竖线钦定长度,li 越小越长。用 2-sat 或并查集求解,复杂度 O(n2)。可以主席树优化建图,复杂度 O(nlogn)

Comments

[+4]
t3 可以不主席树优化建图,用 set 维护做到小常数 O(nlogn).
  • 2023-07-19 21:38:31
  • Reply
Comment replies
zhaohaikun:这怎么做,你是能不把图建出来吗
qiuzx:Reply zhaohaikun:注意到这个2-SAT的限制本质上是一些区间颜色相同,于是可以在扫描过程中把相同颜色的点合并起来当作一个新点

Post a comment

You can use @mike to mention the user mike.

If you wish to input the '@' character, please use @@