做题记录 25.2.4

\(\textcolor{purple}\odot\) [ABC355G] Baseball

即求

\[\large \min_{x_{1\sim k}\mid 1\le x_1<x_2<\cdots<x_k\le n}\left(\sum_{y=1}^n p_y\min_{i=1}^k |x_i-y|\right) \]

其意义为在 \([1,n]\) 中选择 \(k\) 个不同的关键点,最小化 \(1\sim n\) 每个位置到最近关键点的距离乘以该位置权值的和

括号中的部分可改为枚举相邻 \(x\) 之间的空隙的贡献(假定 \(x_0=-\infty\)\(x_{k+1}=\infty\)\(\forall j<1\lor j>n(p_j=0)\)

\[\large\min_{x_{1\sim k}\mid 1\le x_1<x_2<\cdots<x_k\le n}\left(\sum_{i=0}^k \sum_{x_i\le j\le x_{i+1}}p_j\min(j-x_i,x_{i+1}-j)\right) \]

\(dp_{i,j}\) 表示 \(1\sim i\),选择了 \(j\)\(x\) 的代价,则容易 \(O(n^2k)\) 求解

考虑优化

\(w(l,r)=\sum_{l\le i\le r} p_i\min(i-l,r-i)\),则上式等于

\[\large\min_{x_{1\sim k}\mid 1\le x_1<x_2<\cdots<x_k\le n}\sum_{i=0}^k w(x_i,x_{i+1}) \]

可证 \(w(l,r)\) 满足四边形不等式,因此可以二分队列做到 \(O(n^2k\log n)\)

可以使用 \(wqs\) 二分优化到 \(O(n\log V\log n)\),细节较多

代码

参考

\(\textcolor{purple}\odot\) [ABC376G] Treasure Hunting

基本和 UVA1205 Color a Tree 相同

显然对于点权最大的非根节点,都是选择其父亲后立即选该节点,因此可以把两者合并,在合并的同时累加贡献

合并后的块的权值为合并前权值的平均数

用堆维护权值

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

代码

\(\textcolor{blue}\odot\) [ABC391G] Many LCS

\(dp\)\(dp\) 模板

代码

相似题

\(\textcolor{purple}\odot\) P10614 BZOJ3864 Hero meet devil \(\quad\) 代码

\(\textcolor{purple}\odot\) [AGC001D] Arrays and Palindrome

所有 \(a_i\)\(b_i\) 一共可以产生 \(\sum_i \lfloor\frac{a_i}2\rfloor+\sum_i\lfloor\frac{b_i}2\rfloor\) 对相等关系

显然只有当相等关系数 \(\ge n-1\) 时才可能强制要求所有数都相同,因此上式不小于 \(n-1\)

\(\sum_i a_i\)\(\sum_i b_i\) 都是 \(n\)

可以证明,当且仅当 \(a\)\(b\) 中奇数的总数不超过 \(2\) 时,\(\sum_i \lfloor\frac{a_i}2\rfloor+\sum_i\lfloor\frac{b_i}2\rfloor\ge n-1\)

因此给定的 \(a\) 中奇数若超过 \(2\),一定无解

\(m=1\)\(a_1=1\) 时,显然可以令 \(b=\{1\}\)

\(m=1\)\(a_1\ne 1\) 时,可以构造 \(b=\{1,a_1-1\}\)

然后考虑一般情况

对于一个 \(a_i\),若其为偶数,且 \(i\ne 1,i\ne m\),对应回文区间为 \([l,r]\),则可构造一个对应区间 \([l+1,r+1]\)\(b_i\),这样 \([l,r+1]\) 中所有位置之间都直接或间接存在相等关系,即该区间内所有数都相等(称为相等区间)

因此把奇数的 \(a_i\) 放到 \(a_1\)\(a_m\)(若都为偶数则忽略,若只有一个则放到 \(a_1\)),然后构造 \(b_1=a_1+1\)(这样 \([1,a_1+1]\) 为相等区间),\(b_i=a_i(i\ne 1,i\ne m)\)\(b_m=a_m-1\)(注意有可能 \(a_m=1\),使得 \(b_m=0\),此时需要删去 \(b_m\)

可证其正确性

时间复杂度 \(O(m)\)

代码

参考

\(\textcolor{purple}\odot\) [AGC002E] Candy Piles

先将 \(a\) 从大到小排序

\(f(i,j)\) 表示删去前 \(i-1\) 行并全局减 \(j-1\) 时的答案

\(\forall a_i<j(f(i,j)=1)\)

其他情况下 \(f(i,j)=\lnot(f(i+1,j)\land f(i,j+1))\)

以下为 \(a=\{7,7,7,4,4,2,1,1\}\)\(f\)

0 1 0
1 0 1
0 1 0
1 0 1 0
0 1 0 1
1 0 1 1 0
0 1 1 0 1 1 0

\(f(i,j)=0\) 时(\(j\le a_i\)),\(f(i-1,j)=f(i,j-1)=1\),因此 \(f(i-1,j-1)=1\)

\(f(i,j)=1\) 时(\(j\le a_i\)),\(f(i+1,j)\)\(f(i,j+1)\) 中至少一个为 \(0\),可得 \(f(i,j-1)\)\(f(i-1,j)\) 中至少一个为 \(0\),因此 \(f(i-1,j-1)=1\)

综上,对于 \(j\le a_i\),有 \(f(i,j)=f(i-1,j-1)\)

原问题的答案为 \(f(1,1)\),先找到最小的 \(i\) 满足 \(i+1>a_{i+1}\),则 \(f(1,1)=f(i,i)\),令 \(t\) 为满足 \(a_{t+1}<i\) 的最小值(假定 \(a_{n+1}=0\)

显然 \(f(i,a_i)=f(t,i)=0\),且 \(f(i,i+1\sim a_i)\)\(f(i+1\sim t,i)\) 都是 \(0/1\) 相间,因此 \(f(i,i+1)=(a_i-i+1)\bmod 2\)\(f(i+1,i)=(t-i+1)\bmod 2\),由此可得 \(f(i,i)\),即 \(f(1,1)\)

时间复杂度 \(O(n\log n)\),瓶颈在于排序

代码

参考

posted @ 2025-02-05 08:50  Hstry  阅读(11)  评论(0)    收藏  举报