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

相关推荐
kobesdu17 小时前
【ROS2实战笔记-19】ROS2 生命周期节点的启动顺序、状态转换陷阱与热备方案
java·前端·笔记·机器人·ros·ros2
谙弆悕博士17 小时前
快速学C语言——第16章:预处理
c语言·开发语言·chrome·笔记·创业创新·预处理·业界资讯
王老师青少年编程18 小时前
csp信奥赛C++高频考点专项训练之字符串 --【字符串排序】:合并序列
c++·字符串·csp·高频考点·信奥赛·字符串排序·合并序列
handler0118 小时前
UDP协议与网络通信知识点
c语言·网络·c++·笔记·网络协议·udp
神仙别闹19 小时前
基于QT(C++)实现学生成绩管理系统
数据库·c++·qt
君义_noip20 小时前
CSP-S 2025 入门级 第一轮(初赛) 完善程序(1)
c++·算法·信息学奥赛·初赛·csp 第一轮
蜡笔小马21 小时前
07.C++设计模式-组合模式
c++·设计模式·组合模式
sheeta199821 小时前
LeetCode 每日一题笔记 日期:2026.05.13 题目:1674. 使数组互补的最少操作次数
笔记·算法·leetcode
liulilittle21 小时前
TCP UCP v1.0:BBR 的非破坏性约束层
网络·c++·网络协议·tcp/ip·算法·c·通信
叁散1 天前
实验项目1 LTE通信原理与应用
笔记·其他