做题记录 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\) 张卡牌放置的方案数,则答案为

\[\frac1{\binom{4n}{n,n,n,n}}\sum_{i=1}^{4n}f_{\min(k,i-1)} \]

对于一个 \(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}}\)

因此

\[f_c=\sum_{c_1+c_2+c_3+c_4=c}\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}\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)\)

代码

参考

posted @ 2025-06-13 07:19  Hstry  阅读(7)  评论(0)    收藏  举报