做题记录 25.4.3

\(\textcolor{purple}\odot\) CF1957E Carousel of Combinations

即求出

\[\begin{aligned} &\sum_{i=1}^n \sum_{j=1}^i \left(\left(\frac{i!}{(i-j)!j!}\cdot (j-1)!\right)\bmod j\right)\\ =&\sum_{i=1}^n \sum_{j=1}^i \left(\frac{i^{\underline j}}j\bmod j\right)\\ \end{aligned} \]

\(i^{\underline j}\) 为连续 \(j\) 个整数相乘,其中恰好一个(为 \(\lfloor\frac ij\rfloor j\))为 \(j\) 的倍数,与分母中的 \(j\) 相抵消剩余 \(\lfloor\frac ij\rfloor\),其余 \(j-1\) 个在 \(\bmod j\) 下余数取遍 \(1\sim j-1\),乘起来为 \((j-1)!\),因此

\[\frac{i^{\underline j}}j\equiv (j-1)!\left\lfloor\frac ij\right\rfloor\pmod j \]

由于

\[(j-1)!\equiv \begin{cases} -1&\text{if}~j\in\mathbb P\\ 2&\text{if}~j=4\\ 0&\text{otherwise} \end{cases}\pmod j \]

可得

\[(j-1)!\left\lfloor\frac ij\right\rfloor\bmod j= \begin{cases} j-\left(\left\lfloor\frac ij\right\rfloor\bmod j\right)&\text{if}~j\in\mathbb P\\ \left(2\left\lfloor\frac i4\right\rfloor\right)\bmod 4&\text{if}~j=4\\ 0&\text{otherwise} \end{cases} \]

记其为 \(f(i,j)\)

\(N=10^6\)

\(1\)\(N\) 枚举 \(j\),维护列表 \(a_{1\sim n}\),每次令 \(a_i\) 加上 \(f(i,j)\),最终 \(a_i\) 保存了 \(\sum_{j=1}^i f(i,j)\)(显然 \(f(i,j)=0\;\text{if}~i<j\)),对 \(a\) 做一次前缀和后 \(a_i\) 保存了 \(n=i\) 时的答案

对于 \(j\ne 4\),只有 \(j\in\mathbb P\) 时才存在 \(f(i,j)\ne 0\),此时需要令 \(a_i\gets a_i+j-\left(\left\lfloor\frac ij\right\rfloor\bmod j\right)\),发现 \(j-\left(\left\lfloor\frac ij\right\rfloor\bmod j\right)\) 的取值分为 \(O(\frac Ni)\) 段,每段连续,因此转化为总计 \(O(N\ln N)\) 个区间加,差分即可(因此最终对 \(a\) 进行两次前缀和)

预处理后可 \(O(1)\) 回答询问

时间复杂度 \(O(N\ln N+q)\)

代码

参考

\(\textcolor{purple}\odot\) CF1956E2 Nene vs. Monsters (Hard Version)

对于连续的五个(环上连续)位置,若第一个位置值为 \(0\),之后四个分别为 \(x,y,z,w\)\(x>0\)

接下来进行 \(T\) 次操作

\(t=\min(T,\lfloor\frac xy\rfloor)\),则在接下来 \(t\) 轮中 \(y\) 都会减少 \(x\),此时的 \(z'=\max(0,z-ty+\binom t2 x)\)

\(u=\begin{cases}t&\text{if}~z'>0\\u=\max\{t\mid z-ty+\binom t2 x>0\}&\text{if}~z'=0\end{cases}\),则 \(w'=\max(0,w-uz+\binom u2y-\binom u3 x)\)

因为 \(u\le T\),在 \(T\) 次操作后 \(w'\le\max(0,w-Tz+\binom T2y-\binom T3 x)\)

\(T>O(\sqrt[3]{\max(x,y,z,w)})\) 时,必然有 \(w'=0\)\(z'=0\)

因此经过 \(O(\sqrt[3]V)\) 轮操作(实际上取 \(2\sqrt[3]V+O(1)\) 轮即可)后,连续正整数段的长度都不超过 \(3\)

特殊处理与 \(1\) 相连的一段,之后每段之间互相独立,可套用之前的式子求出最终值

时间复杂度 \(O(\sum n\sqrt[3]V)\)

代码

参考

\(\textcolor{blue}\odot\) CF1955H The Most Reckless Defense

\(v_{i,j,r}\) 表示圆心在 \((i,j)\),半径为 \(r\) 的范围内路径上的整点数

\((x,y)\) 处属性为 \(p\) 的塔半径取 \(r\),对敌人产生的总体杀伤力\(pv_{x,y,r}-3^r\),题目所求的 \(h\) 的最大值即为所有塔的总体杀伤力之和的最大值

由于 \(pv_{x,y,r}-3^r\le500\pi r^2-3^r\),当 \(r>12\) 时总体杀伤力一定 \(<0\),显然不优

建立二分图,每个左部点对应一个塔,每个右部点对应一种半径,连边容量为 \(1\),费用为对应的总体杀伤力

答案为最大权匹配

若用网络流则时间复杂度 \(O(k^2r^2)\),其中 \(r=12\),若使用 \(\text{KM}\) 算法则时间复杂度 \(O(k^3)\)

代码

参考

\(\textcolor{purple}\odot\) CF1951F Inversion Composition

\(s=p^{-1}\),则

\[\begin{aligned} &\text{inv}(q)+\text{inv}(r)\\ =&\sum_{1\le j<i\le n}[q_j>q_i]+\sum_{1\le j<i\le n}[r_j>r_i]\\ =&\sum_{1\le j<i\le n}[q_j>q_i]+\sum_{1\le j<i\le n}[q_{p_j}>q_{p_i}]\\ =&\sum_{1\le j<i\le n}[q_j>q_i]+\sum_{1\le s_j<s_i\le n}[q_{p_{s_j}}>q_{p_{s_i}}]\\ =&\sum_{1\le j<i\le n}[q_j>q_i]+\sum_{1\le s_j<s_i\le n}[q_j>q_i]\\ \end{aligned} \]

令一组 \((i,j)\;(i<j)\) 对上式的贡献为 \(w(i,j)\),则讨论可得

\[w(i,j)=\begin{cases} 1&\text{if}~s_i>s_j\\ 0&\text{if}~q_i<q_j\land s_i<s_j\\ 2&\text{if}~q_i>q_j\land s_i<s_j\\ \end{cases} \]

先算出 \(\text{inv}(s)=\text{inv}(p)\),从 \(k\) 中减去,则修改 \(w(i,j)\)

\[w(i,j)=\begin{cases} 2&\text{if}~q_i>q_j\land s_i<s_j\\ 0&\text{otherwise} \end{cases} \]

此时若 \(k<0\)\(2\nmid k\) 则必然无解

再令 \(k\gets \frac k2\),则问题转化为构造一个排列 \(q\),使得

\[\sum_{1\le i<j\le n}[q_i>q_j\land s_i<s_j]=k \]

考虑令 \(q\) 的一段前缀递减,一段后缀递增,两段的值域不交,两者间插入一个数用于补足剩余的数量

初始令 \(q_1\gets 1\),然后从 \(2\)\(n\) 依次扫描,设当前扫描到 \(i\),树状数组计算出 \(cnt=\sum_{1\le j<i}[s_j<s_i]\)

\(k\ge cnt\) 则令 \(k\gets k-cnt\),并令 \(q_i=q_{i-1}-1\),令 \(q_{1\sim i}\) 整体加一(可以通过记录偏移量 \(O(1)\) 实现)

否则 \(i\) 位置为前后缀之间的交界处

\(k=0\)\(\forall i\le j\le n,q_j\gets j\)

否则令 \(q_i\)\(1\sim j-1\) 中第 \(k\) 个满足 \(s_j<s_i\)\(q_j\),并令这段前缀的 \(q_j\) 加一,对于剩余后缀令 \(\forall i< j\le n,q_j\gets j\)

最终若 \(k\) 还有剩余则无解,否则得到一组可行解

时间复杂度 \(O(\sum n\log n)\)

代码

参考

posted @ 2025-04-04 09:19  Hstry  阅读(4)  评论(0)    收藏  举报