水题记录2.4

文章目录

  • 水题记录2.4
    • [CF1764E Doremy's Number Line](#CF1764E Doremy's Number Line)
    • [CF403D Beautiful Pairs of Numbers](#CF403D Beautiful Pairs of Numbers)
    • [CF1204E Natasha, Sasha and the Prefix Sums](#CF1204E Natasha, Sasha and the Prefix Sums)
    • [CF675E Trains and Statistic](#CF675E Trains and Statistic)
    • [CF735E Ostap and Tree](#CF735E Ostap and Tree)
    • [CF441E Valera and Number](#CF441E Valera and Number)

水题记录2.4

CF1764E Doremy's Number Line

link

特判一下:

a 1 ≥ k a_1\ge k a1≥k 一定有解, a 1 + b 1 < k a_1+b_1<k a1+b1<k 一定无解。

注意到 1 1 1 在最后一定不劣,即变为后 n − 1 n-1 n−1 个操作尽量往右,最后看到达的右端 r + b 1 r+b_1 r+b1 能否到 k k k。

考虑 D P DP DP, a i a_i ai 升序排序时最优, f i f_i fi 为前 i i i 个操作能染色的最右端。

转移即为 f i = max ⁡ ( min ⁡ ( f i − 1 , a i ) + b i , max ⁡ j = 1 i a j + b j , a i ) f_i=\max(\min(f_{i-1},a_i)+b_i,\max_{j=1}^ia_j+b_j,a_i) fi=max(min(fi−1,ai)+bi,maxj=1iaj+bj,ai)。

code

CF403D Beautiful Pairs of Numbers

link

不妨考虑 i i i 个区间(差值 + 1 +1 +1)的和。

记 f i , j f_{i,j} fi,j 表示选了 i i i 个互不相同的正整数,和为 j j j 的方案数。

不妨钦定选的数单调递增。

那么可以有转移:

转移: f i , j = f i − 1 , j − i + f i , j − i f_{i,j}=f_{i-1,j-i}+f_{i,j-i} fi,j=fi−1,j−i+fi,j−i。

具体意义为:在原有的 i i i 个数都加上 1 1 1,或者给原来的 i − 1 i-1 i−1 个数都加上 1 1 1,再加入一个 1 1 1。

则 a n s = ∑ i = 1 n k ! f k , i C k + n − i k ans=\sum_{i=1}^n k! f_{k,i} C_{k+n-i}^k ans=∑i=1nk!fk,iCk+n−ik

code

CF1204E Natasha, Sasha and the Prefix Sums

link

考虑对最大前缀和为 i i i 的序列计数。

容斥为最大前缀和大于等于 i i i 的序列个数(小于等于难算)。

将题意转变为向右上和右下到 ( n + m , n − m ) (n+m,n-m) (n+m,n−m)。

考虑最大前缀和大于等于 i i i 即为与 y = i y=i y=i 有交。

参考卡特兰数,将第一次碰到 y = i y=i y=i 以左的区域翻折上去,不重不漏。

即 ( 2 i , 0 ) (2i,0) (2i,0) 到 ( n + m , n − m ) (n+m,n-m) (n+m,n−m) 方案数,发现其为 C n + m n − i C_{n+m}^{n-i} Cn+mn−i。其中 i ∈ max ⁡ ( 0 , n − m , n ) i\in\\max(0,n-m,n) i∈max(0,n−m,n)

那么便做完了。

code

CF675E Trains and Statistic

link

考虑让 f i f_i fi 表示 i i i 到 i + 1 , n i+1,n i+1,n 的最少花费之和。

考虑如何转移 f i f_i fi,不妨从后往前。

则有 f i = min ⁡ j = i + 1 a i f j + n − i − ( a i − j ) f_i=\min_{j=i+1}^{a_i} f_j+n-i-(a_i-j) fi=minj=i+1aifj+n−i−(ai−j)

考虑线段树优化 f j + j f_j+j fj+j,那么就做完了。

code

CF735E Ostap and Tree

link

考虑树上 D P DP DP。

记 f u , i f_{u,i} fu,i 表示以 u u u 为根的子树合法,且离 u u u 最近的染色点距离为 i i i 的方案数。

记 g u , i g_{u,i} gu,i 表示以 u u u 为根的子树不合法,且离 u u u 最远的非染色点距离为 i i i 的方案数。

由于合并两个状态无法改变最远非法点的距离(如不不能变成合法的话),故第二维是 O ( k ) O(k) O(k) 的。

考虑合并:

f u , i × f v , j → f u , min ⁡ ( i , j + 1 ) f_{u,i}\times f_{v,j} \rightarrow f_{u,\min(i,j+1)} fu,i×fv,j→fu,min(i,j+1)

g u , i × g v , j → g u , max ⁡ ( i , j + 1 ) g_{u,i}\times g_{v,j} \rightarrow g_{u,\max(i,j+1)} gu,i×gv,j→gu,max(i,j+1)

对于合并 f u , i f_{u,i} fu,i 和 g v , j g_{v,j} gv,j,需要考虑 i + j + 1 i+j+1 i+j+1 和 k k k 的关系,分类讨论。

合并 g u , i g_{u,i} gu,i 和 f u , j f_{u,j} fu,j 同理。

时间复杂度 O ( n k 2 ) O(nk^2) O(nk2)

code

CF441E Valera and Number

link

发现 200 200 200 次 + 1 +1 +1 最对对第八位产生影响。

考虑 f i , j , k f_{i,j,k} fi,j,k 表示到第 i i i 次操作,低八位为 j j j,低八位的前面那一串数字中连续 0 0 0 或者 1 1 1 的个数。( 以 256 256 256 为界限,例如 257 257 257 表示前面有 1 1 1 个连续的 0 0 0)

考虑转移, × 2 \times 2 ×2 和 + 1 +1 +1 分开考虑。

分类进不进位。

× 2 \times 2 ×2,进位,则低八位的前面那一串数字,若原为一串 0 0 0,变成单个 1 1 1,否则就是 1 1 1 的长度加一。

其他几种情况同理考虑。

code

相关推荐
cany10007 分钟前
C++进阶 -- std::deque‌ 和 ‌std::list
开发语言·c++
imDwAaY12 分钟前
从感知机到 Attention:我用 PyTorch 打穿 CS188 机器学习终章 CS188 Proj5 学习笔记
人工智能·pytorch·笔记·python·学习·机器学习
2301_7890156212 分钟前
Lnux权限
linux·开发语言·c++·权限
民乐团扒谱机9 小时前
【AI笔记】短时纯音时长对音高感知偏移效应研究综述
人工智能·笔记
暴躁小师兄数据学院9 小时前
【AI大数据工程师特训笔记】第12讲:表分区与索引
大数据·笔记·sql·postgresql
暴躁小师兄数据学院11 小时前
【AI大数据工程师特训笔记】第16讲:大数据环境安装
大数据·hadoop·笔记·flink·spark·database
Lin_Aries_042112 小时前
最终成果报告:导航模型与无人机导航方向
笔记·具身智能·datawhale
pluviophile_s12 小时前
数据结构:第2讲:线性表
数据结构·笔记
feng_you_ying_li14 小时前
C++复习二,继承与多态
c++
AOwhisky14 小时前
MySQL 学习笔记(第一期):数据库基础与 MySQL 初探
运维·数据库·笔记·学习·mysql·云计算