【省选模拟】4 月

4.8

01串

树上路径

DP。设 f[u,0/1/2/3] 为 子树 uu 向下有一条长为 0/1/2/3 的链的答案,转移时需要拼接 1,32,2,需要再开一个数组表示前面子树剩下 i 条长为 13 的链的答案,转移复杂度为度数的平方。结论:随机 1,1 的序列前缀和最大值为 n 级别。因此把出边 shuffle 后只考虑尽量大的 i 即可,时间复杂度 O(nn)

思路考场上想的差不多, 但实现很恶心,常数&码量都爆炸,我果然只会背板

4.7

星际广播

枚举最后变成的字符,给每个位置赋权 0,1,问题变为 m 个长为 l 的区间能覆盖的最大权值和

暴力 DP 是 O(n2) 的,根据实现可以获得 60~68pts。设 x 个区间的答案为 f(x),那么 (x,f(x)) 构成上凸包,可以 wqs 二分。简证凸性:记第 i 个区间新覆盖的权值为 c[i],那么 c[i]c[i+1],否则调换更优

4.6

Fable

ycx 的极简做法:k 轮冒泡排序后最小的元素一定是 mini=1k+1{ai},次小的则是前 k+2 个元素中次小的,甚至可以做到 O(n)

Fiend

看到奇加偶减考虑构造行列式,不难得到 ai,j=[lij][jri]

发现每行都是一段连续的 1,考虑找到该列有元且右端点最小的行,用该行消元后仍然满足每行是连续的 1。对于每个左端点,用可并堆维护对应的右端点即可

维护主元与行号的双射即可解决交换行值取反

4.3

Max (CSA Expected Max)

m 很小,可以状压决策集合,逐个添加元素。

f[i,s,j] 为第 i 个元素在且仅在操作集合 s 中被加,值为 j 的概率;g[i,s,j] 为前 i 个元素占用了操作集合 s,最大值为 j 的概率

枚举 highbit(s)i 加了多少可以 O(c2m2m) 计算 f[i],预处理 f[i,s],g[i,s] 前缀和,枚举子集可以 O(cm3m) 转移到 g

Paint (ARC063F)

一个比较简洁分治做法,较线段树做法常数和码量都更小

两层分治枚举 x,y 上的中线,统计跨过中线的矩形。求出每个左/右边界对应的上下边界,通过旋转坐标系使得矩形右上角位于右上区域。下边界在右下区域可以单调指针求出左边界;下边界在左下区域可以单调队列维护左边界

不难发现答案下界为 2(max(w,h)+1),很难想到不跨过 w2,h2 的矩形周长上界为 2(w+h),因此答案一定跨过 w2h2,可以省掉一个分治。时间复杂度 O(nlogn)

posted @   401rk8  阅读(85)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示