做题记录 25.6.12
\(\textcolor{purple}\odot\) CF1766F MCF
令 \(in_i\) 为到达 \(i\) 容量为奇数的边数量减去从 \(i\) 出发的数量,显然存在 \(2\nmid in_i\;\;(1<i<n)\) 时无解
对于原图的 \((u,v,c,w)\),在新图上连 \((u,v,\lfloor\frac c2\rfloor,w)\)
对于每个点,若 \(in_i>0\) 则连 \((s,i,\frac {in_i}2,-\infty)\),否则连 \((i,r,\frac{in_i}2,-\infty)\)
求出最小费用可行流即可,若最后增加的一部分边没有满流则无解
时间复杂度 \(O(n(n+m)f)\)
\(\textcolor{blue}\odot\) CF1766E Decomposition
若 \(a_i=0\) 则无论如何都必然自成一个序列,其贡献为 \(i(n-i+1)\)
忽略 \(0\) 后至多有 \(3\) 个序列,令 \(f_{i,j,k,l}\) 表示右端点为 \(i\),三个序列最后一个值分别为 \(j,k,l\)(无此序列则 \(=0\)),对应左端点数量
时间复杂度 \(O(nw^3)\),其中 \(w=4\)
\(\textcolor{purple}\odot\) CF1765I Infinite Chess
令 \(h=8\),对于每个白棋 \((x,y)\),保留列 \(x-2h-O(1)\sim x+2h+O(1)\),对于起点 / 终点 \((x,y)\) 保留列 \(x-h-O(1)\sim x+h+O(1)\),总计保留 \(O(hn)\) 列,显然存在一种最短路,满足不在保存下的列中只会水平移动
仅建立保存下的列内的图即可
时间复杂度 \(O(h^2n\log h^2n)\)
\(\textcolor{purple}\odot\) CF1765L Project Manager
令 \(f_{i,j}\) 表示第 \(i\) 个人第 \(j\) 天是否为工作日,且当天他还没有安排工作,且当天不是节假日
则依次考虑每个项目,对于当前项目,初始令天数 \(d\) 为 \(0\),依次枚举每个部分,设对应的人为 \(x\),则找到最小的 \(T\) 使得 \(T>t\) 且 \(f_{x,T}=0\),令 \(t\gets T,f_{x,T}\gets 1\)
问题转化为 \(O(\sum p_i)\) 次找到 \(f_{x,p}\) 之后第一个 \(f_{x,\ast}\) 为 \(0\) 的位置和令 \(f_{x,p}\gets 1\)
考虑枚举星期几,找到对应的第一个 \(f_{x,\ast}\),\(7\) 项取最小即可,当第 \(x\) 人当天休息时直接跳过,这样处理了第一个限制
显然答案上限为 \(M=7(n+\sum p_i)+O(1)\),对于 \(1\sim M\) 的每天,预处理那天之后第一个和它星期几相同且不放假的时间
同时对于每个人保存一个并查集,位置 \(x\) 存储 \(x\) 天及之后第一个和 \(x\) 星期几相同且还没有安排工作的日子,unordered_map 保存修改过的位置
结合两者可处理剩下两条限制
\(f\) 的修改直接操作到 unordered_map上即可
总时间复杂度 \(O(\sum p_i\alpha(\sum p_i))\)
\(\textcolor{purple}\odot\) CF1765G Guess the String
先查询一次 \(p_2\) 求出 \(s_2\)
假设目前已经求出 \(s_{1\sim i-2}\),查询 \(p_i\)
若 \(p_i\ge 2\) 则 \(s_{i-1}=s_{p_i-1},s_i=s_{p_i}\)
若 \(p_i=1\),则 \(s_2=0\) 时有 \(s_{i-1}=1\),\(s_i=0\),否则无法确定
若 \(p_i=0\),则 \(s_2=1\) 时有 \(s_{i-1}=s_i=1\),否则无法确定
查询 \(q_i\) 同理
每次在 \(p_i\) 和 \(q_i\) 中随机一个查询,至多 \(\frac12\) 的概率需要查询另一个(显然同时查询两个一定可以得到答案),期望次数约 \(750\) 次,合法
\(\textcolor{blue}\odot\) CF1764F Doremy's Experimental Tree
令 \(1\) 为根,则 \(v\) 在子树 \(u\) 内时,有 \(f(u,1)>f(v,1)\)(反之不一定成立),但 \(v\) 的父亲一定为 \(f(u,1)>f(v,1)\) 的 \(u\) 中 \(f(u,v)\) 最大的一个
由此可以 \(O(n^2)\) 求出每个点的父亲
考虑如何求出 \((u,fa_u)\) 的边权 \(w\)
显然 \(f(u,u)>f(u,fa_u)\),且每个子树 \(u\) 外的点会令差距增大 \(w\),因此 \(w=\frac{f(u,u)-f(u,fa_u)}{n-sz_u}\)
时间复杂度 \(O(n^2)\)
\(\textcolor{purple}\odot\) CF1765C Card Guessing
令 \(f_i\) 表示已知 \(i\) 张卡牌的状态,猜出第 \(i+1\) 张正确,\(4n\) 张卡牌放置的方案数,则答案为
对于一个 \(f_c\),设已知状态中,四种花色分别为 \(c_{1\sim 4}\)(\(c=c_1+c_2+c_3+c_4\)),则放置已知部分方案数为 \(\binom{c}{c_1,c_2,c_3,c_4}\),放置未知部分方案数为 \(\binom{4n-c}{n-c_1,n-c_2,n-c_3,n-c_4}\)
令 \(mn=\min(c_1,c_2,c_3,c_4)\)(显然 \(mn<n\)),考虑 \(mn\) 对应花色在未知部分中的放置,一共 \(\binom{4n-c}{n-mn}\) 类,\(\binom{4n-c-1}{n-mn}\) 类中有一个 \(mn\) 在猜测的位置,因此贡献为 \(\frac{\binom{4n-c-1}{n-mn}}{\binom{4n-c}{n-mn}}\)
因此
背包即可,时间复杂度 \(O(n^3)\)
\(\textcolor{purple}\odot\) CF1765A Access Levels
令 \(S_i=\{j\mid a_{j,i}=1\}\) 表示能查看文件 \(i\) 的人的集合
若文件 \(i\) 和文件 \(j\) 分到同一组,可证其充要条件为 \(S_i\subseteq S_j\) 或 \(S_i\supseteq S_j\)
因此同一组中的 \(S\) 依次包含
若 \(S_i\subset S_j\),或 \(S_i=S_j\) 且 \(i<j\) 则 \(i\to j\)(防止出现环),则转化为 \(\text{DAG}\) 最小路径覆盖,网络流即可
时间复杂度 \(O(\frac{m^2n}\omega+m^2\sqrt m)\)

浙公网安备 33010602011771号