做题记录 25.6.14
\(\textcolor{blue}\odot\) CF1743F Intersection and Union
对值域扫描线,则每个截面可以用 \(dp\) 解决,整个问题用 \(ddp\) 即可,线段树维护,时间复杂度 \(O(V+n\log n)\)
\(\textcolor{purple}\odot\) CF1746E1 Joking (Easy Version)
设目前可以确定值在集合 \(S\) 中
当 \(|S|=1\) 时直接猜测
当 \(|S|=2\) 时使用一次直接猜测变为 \(|S|=1\) 的情况
当 \(|S|=3\) 时,设 \(S=\{p,q,r\}\),先查询一次 \(\{p\}\),若为 \(\text{NO}\),则再查询一次,若同样为 \(\text{NO}\),则可删去 \(p\),否则查询一次 \(\{q\}\),若为 \(\text{YES}\) 则删去 \(r\),否则删去 \(q\),转化为 \(|S|=3\)
当 \(|S|=4\) 时,将其划分为四个大小尽量相近的集合 \(s_{1\sim 4}\),查询 \(s_1\cup s_2\) 和 \(s_2\cup s_3\),根据结果可以删去四个集合之一
操作次数 \(2\log_{\frac34}n+O(1)\)
\(\textcolor{blue}\odot\) CF1743E FTL
若不使用同时攻击,则答案为 \(\min\left(t_1\left\lceil\frac{h}{p_1-s}\right\rceil,t_2\left\lceil\frac{h}{p_2-s}\right\rceil\right)\)
否则设最后一次同时攻击在 \(i\),则 \(i\) 时刻后双方都没有充能,与初始状态相同,令 \(f_i\) 表示产生 \(i\) 的攻击力,最后一次操作为同时攻击,且只进行这一次同时攻击,最少花费的时间,\(g_i\) 表示产生 \(i\) 的攻击力最少花费的时间
显然 \(f_0=g_0=0\),令 \(n=h+\max(p_1,p_2)\),答案为 \(\min\left(t_1\left\lceil\frac{h}{p_1-s}\right\rceil,t_2\left\lceil\frac{h}{p_2-s}\right\rceil,\min_{i=h}^{n} g_i\right)\)
显然 \(g\) 的转移为 \(g_i=\min_{j=0}^{i-1}(g_j+f_{i-j})\)
对于 \(f_i\),枚举同时攻击前第一艘的攻击次数 \(j\),显然 \(0\le j\le \frac{i-(p_1+p_2-s)}{p_1-s}\),此时第二艘的攻击次数至少为 \(\left\lceil\frac{i-(j(p_1-s)+p_1+p_2-s)}{p_2-s}\right\rceil\),因此
时间复杂度 \(O(n^2)\)
\(\textcolor{purple}\odot\) CF1739F Keyboard Design
每个产生贡献的字符串在结果中为一个区间,这个区间是可以预处理的,存在正反两种情况,由于字符串长度 \(\ge 2\),因此对于确定的结果,每个产生贡献的字符串的位置唯一
用这些字符串建立 \(\text{AC}\) 自动机,令 \(f_{s,u}\) 表示目前放置了子集 \(s\) 的字符,在结点 \(u\) 处
容易做到时间复杂度 \(O(w2^w\sum|s|)\),空间复杂度 \(O(2^w\sum|s|)\),其中 \(w=12\)
\(\textcolor{purple}\odot\) CF1739E Cleaning Robot
令 \(f_{i,j}\) 表示从 \((i,j)\) 开始(包含第 \(j\) 列)移到最后一列过程中最小修改数量
令 \(s\) 为初始状态,假定 \(s_{0/1,n+1}=0,f_{0/1,n+1}=0\)
当 \(s_{i\oplus 1,j}=0\) 时,\(f_{i,j}=f_{i,j+1}\)
否则当 \(s_{i,j+1}=0\) 时,\(f_{i,j}=\min(f_{i\oplus1,j+1},f_{i,j+1}+1)\)
否则当 \(s_{i\oplus 1,j+1}=0\) 时,\(f_{i,j}=\min(f_{i,j+2},f_{i\oplus1,j+2})+1\)
否则 \(f_{i,j}=\min(f_{i,j+2}+2,f_{i\oplus 1,j+2}+1)\)
时间复杂度 \(O(n)\)

浙公网安备 33010602011771号