做题记录 25.7.26

\(\textcolor{blue}\odot\) CF1670F Jee, You See?

差分为求 \(\sum_{a_{1\sim n}}[\sum a\le s][\bigoplus a=x]\)

\(f_{i,j}\) 表示 \(i\) 及高位确定,为了保证总和不超过 \(s\)\(i-1\) 位向 \(i\) 位的进位不超过 \(j\) 的方案数

时间复杂度 \(O(n^2\log V)\)

代码

\(\textcolor{purple}\odot\) CF1667C Half Queen Cover

假定在 \(n\times n\) 的棋盘上放置了 \(k\) 个半皇后,则只考虑纵横方向一共覆盖 \(k\)\(k\)

剩下的 \((n-k)^2\) 的格子至少覆盖了 \(2(n-k)-1\) 条对角线,要全部覆盖到至少要 \(2(n-k)-1\) 个半皇后,即必须有 \(2(n-k)-1\le k\),得到 \(k\ge \left\lceil\frac{2n-1}3\right\rceil\)

\(3\mid (2n-1)\) 时,令 \(t=\frac{n-2}3\),在左上角 \((t+1)\times(t+1)\) 的子矩形的反对角线上放置 \(t+1\) 个,在右下角 \(t\times t\) 的子矩形的反对角线上放置 \(t\) 个,显然可以完全覆盖,且数量符合

否则在右下角放置一个,转化为 \((n-1)\times (n-1)\) 的情况,显然对于 \(2n-1\equiv 1\pmod 3\)\(2n-1\equiv 2\pmod 3\) 的情况数量都符合

代码

参考

\(\textcolor{purple}\odot\) CF1665E MinimizOR

区间 \([l,r]\) 的答案等于从 \([l,r]\) 中最小的 \(\log_2(V)+1\) 个数中选择的答案,用 \(\text{ST}\) 表或线段树维护即可

证明:

  • 等价于存在数集 \(S\subset[0,2^k)\cap \mathbb Z\),选出 \(a\ne b,a\in S,b\in S\) 使得 \(a\mid b\) 最小,则 \(a,b\) 都在 \(S\) 中前 \(k+1\) 小中
  • \(k=1\) 时显然成立
  • \(k>1\) 时,假设 \(k-1\) 时成立,令二进制下第 \(k\) 位为 \(0\) 的数集为 \(S_0\),为 \(1\) 的数集为 \(S_1\)\(S_0\cup S_1=S\)
  • \(|S_0|\ge 2\) 时,显然从 \(S_0\) 中选两个最优,转化为 \(k-1\) 的局面,满足在最小的 \(k\) 个中,符合要求
  • \(|S_0|=0\) 时,只能从 \(S_1\) 中选,令 \(S'=\{x-2^{k-1}\mid x\in S_1\}\),同样转化为 \(k-1\) 的局面,满足在最小的 \(k\) 个中,符合要求
  • \(|S_0|=1\) 时,令 \(S'=S_0\cup\{x-2^{k-1}\mid x\in S_1\}\),满足在 \(S'\) 中最小的 \(k\) 个中,即原本 \(S\) 的最小 \(k+1\) 个中,符合要求

时间复杂度 \(O(n\log n\log V+q\log n\log V+q\log^2 V)\)

代码

参考

\(\textcolor{purple}\odot\) CF1671F Permutation Counting

定义 \([l,r]\) 为合法区间当且仅当 \(p_l\sim p_r\) 取遍 \(l\sim r\)

对于一个 \(p\),显然可以划分为若干极小合法区间

若一个极小合法区间长度 \(>1\),则称其为非平凡区间的

考虑其中一个非平凡区间 \([l,r]\)

可证 \([l,r]\) 中至少包含 \(r-l\) 组逆序对和 \(1\) 组下降数

由于总逆序对数和下降数都不超过 \(11\),因此至多有 \(11\) 个非平凡区间,且每个非平凡区间长度 \(\le 12\),长度总和 \(\le 22\)

预处理 \(cnt_{n,d,i}\) 表示长度为 \(n\),下降数为 \(d\),逆序对数为 \(i\) 的非平凡区间数量(建议打表)

容易由其得到 \(dp_{s,l,d,i}\) 表示 \(l\) 个非平凡区间总长为 \(s\),下降数之和为 \(s\),逆序对数之和为 \(i\) 的方案数(\(O(m^7)\) 预处理,\(m=11\)

对于一组询问 \((n,k,x)\),答案为 \(\sum_s\sum_l \binom{n-l+c}c dp_{s,l,x,k}\)

时间复杂度 \(O(m^7+tm^3)\),容易优化到 \(O(m^7+tm^2)\)

代码

参考

\(\textcolor{blue}\odot\) CF1666E Even Split

以下用 \(k\) 表示题目中的 \(l\)

给定线段长度的上下界 \([L,R]\) 后容易 \(O(n)\) 判定(初始 \(l=r=0\),枚举 \(i\),令 \(l\gets \max(l+L,a_i),r\gets\min(r+R,a_{i+1})\),假定 \(a_{n+1}=k\),若全程有 \(l\le r\) 且最终 \(l\le k\le r\) 则合法)

求出最大的 \(mn\) 使得 \([mn,k]\) 合法,求出最小的 \(mx\) 使得 \([0,mx]\) 合法,则 \([mn,mx]\) 合法,显然其为极差最小的方案

证明:

  • \(l_0=0,l_i=\max(l_{i-1}+mn,a_i)\)\(r_0=0,r_i=a_{i+1}\)\(L_0=0,L_i=a_i\)\(R_0=0,R_i\gets\min(R_{i-1}+mx,a_{i+1})\)
  • 由于 \([mn,k]\)\([0,mx]\) 合法,因此有 \(\forall i,l_i\le r_i,L_i\le R_i\)\(l_n\le k\le r_n,L_n\le k\le R_n\)
  • 要使 \([mn,mx]\) 合法,需要有 \(\forall i,l_i\le R_i\)\(l_n\le k\le R_n\),后者显然成立,考虑如何证明前者
  • 从前往后归纳,\(i=0\) 时显然成立
  • 假设 \(i-1\) 时成立,考虑证明 \(i\) 时成立
  • 已知 \(\max(l_{i-1}+mn,a_i)\le a_{i+1}\)\(a_i\le \min(R_{i-1}+mx,a_{i+1})\)\(l_{i-1}\le r_{i-1}\)\(mn\le mx\),要证明 \(\max(l_{i-1}+mn,a_i)\le \min(R_{i-1}+mx,a_{i+1})\)
  • 由于 \(a_i\le a_{i+1}\),可得 \(l_{i-1}+mn\le a_{i+1}\)\(a_i\le R_i+mx\),而 \(l_{i-1}+mn\le R_{i-1}+mx\),显然可以推出 \(\max(l_{i-1}+mn,a_i)\le \min(R_{i-1}+mx,a_{i+1})\)

容易 \(O(n\log V)\) 得到 \(mn,mx\),考虑求出两者后如何得到一组解

\(l_0=r_0=0,l_i=\max(l_{i-1}+mn,a_i),r_i\gets\min(r_{i-1}+mx,a_{i+1})\),构造 \(ans_n=k\)\(ans_i\)\([\max(ans_{i+1}-mx,l_i),\min(ans_{i+1}-mn,r_i)]\) 中任取,取区间 \([ans_{i-1},ans_i]\) 即可

总时间复杂度 \(O(n\log V)\)

代码

参考

\(\textcolor{purple}\odot\) CF1661F Teleporters

\(F(L,c)=\lfloor\frac Lc\rfloor^2(c-(L\bmod c))+(\lfloor\frac Lc\rfloor+1)^2(L\bmod c)\) 表示一个长度为 \(L\) 的区间中新增 \(c\) 个点后最小的耗能

显然 \(F\) 是凸的

一个 \(O(nV\log n)\) 的实现为初始令 \(x_i\gets 0\),用堆维护 \(\{(F(a_i-a_{i-1},x_i)-F(a_i-a_{i-1},x_i+1))\}\),每次取出一个最小的使对应 \(x_i\) 加一

\(\{(F(a_i-a_{i-1},v)-F(a_i-a_{i-1},v+1))\mid i,v\}\) 从大到小排序,则最优情况下选择的为一个前缀

二分出选择的最小值,转化为对于每个 \(i\),求出差分不小于二分值的情况下选择最多项的总和,这一步可以通过二分实现,总时间复杂度 \(O(n\log^2 V)\)

得到最小值 \(d\) 后,设 \(g(d)\) 为对应的总和,则实际答案为 \(\lceil\frac{g(d+1)-m}d\rceil\)

总时间复杂度 \(O(n\log^2 V)\)

代码

参考

posted @ 2025-07-27 08:39  Hstry  阅读(7)  评论(0)    收藏  举报