水题记录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

相关推荐
ShineWinsu1 小时前
C++技术文章
开发语言·c++
做cv的小昊1 小时前
【TJU】研究生应用统计学课程笔记(4)——第二章 参数估计(2.1 矩估计和极大似然估计、2.2估计量的优良性原则)
人工智能·笔记·考研·数学建模·数据分析·excel·概率论
星星码️2 小时前
C++选择题练习(二)
c++
叹一曲当时只道是寻常2 小时前
memos-cli 安装与使用教程:将 Memos 笔记同步到本地并支持 AI 语义搜索
人工智能·笔记·golang
誰能久伴不乏2 小时前
SPI总线通信协议基础与ICM20607传感器驱动开发指南
arm开发·c++·驱动开发·嵌入式硬件·arm
十五年专注C++开发2 小时前
HDF5: 大数据的 “超级容器“
大数据·数据库·c++·hdf5
白玉cfc2 小时前
OC底层原理:alloc&init&new
c++·macos·ios·objective-c·xcode
寒秋花开曾相惜2 小时前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.6 一些Y86-64指令 )
linux·运维·服务器·开发语言·笔记·学习·安全
-凌凌漆-2 小时前
【QML】qml和C++中同时使用单例模式
java·c++·单例模式