![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp动态规划
文章平均质量分 74
doctorZ_
这个作者很懒,什么都没留下…
展开
-
CF1770E Koxia and Tree
基于概率的题原创 2023-01-02 21:11:17 · 356 阅读 · 0 评论 -
AGC041F Histogram Rooks
容斥题总是很玄妙。原创 2022-10-26 22:46:38 · 354 阅读 · 1 评论 -
AGC058D Yet Another ABC String
注意到不合法的位置可能会连起来,变成形如。显然没有前途,考虑容斥,钦定一个集合。,问有多少个这样的字符串,对。考虑用二元生成函数刻画这个。求方案数然后乘上容斥系数。的方案数,容易得到递推式。的做法,前缀和可以优化到。就是答案,但还是不好算。的位置,所以不需要乘上。为字符串,对每个集合。的情况由于容斥系数为。表示当前字符串长度为。原创 2022-10-08 17:25:03 · 335 阅读 · 0 评论 -
P8554 心跳
种数,一种是前缀最大值称为红色,一种是删除最靠近它的前缀最大之后会变为前缀最大值称为绿色,一种是无论如何都会变成前缀最大值,称为黄色。2.x为不为绿的颜色,红绿x前不能出现黄黄,不能出现黄红绿,否则不符合构造颜色序列时的操作2。序列和颜色序列构成双射,且显然对于任意一个颜色序列,我们都可以构造出一个合法的。个绿色,由于它们相对位置并不重要,所以我们钦定后面的绿色紧跟在红色后面,即。必定能够对应一个颜色序列,然后一个颜色序列必定能够回推出一个。,可以考虑插入构造,所以颜色序列的个数就是合法。原创 2022-09-28 22:03:43 · 322 阅读 · 0 评论 -
P8478 「GLR-R3」清明
的水滴是可以互达的,对于这个部分,我们只需要记录有多少滴水没有被占用,而。滴水可以滴到的集合大小,我们可以把问题转化成一个这样的组合模型,有。级,但是每一种去向的雨水的单位体积都应是非负整数,且总和为。,一种放法的总贡献就是所有箱子贡献的乘积,求所有放法的贡献和。还有一个容斥做法,不用写子集卷积,不再限制。「下一个瞬间」,雨水的奇妙度之和对素数。级窗沿,从高到低编号,最高层编号为。的条件,所以把后面的式子拆成若干单项式。现在,悲伤的人儿想知道,对于所有。单位的雨水,那么称此时雨水的。原创 2022-09-22 22:37:52 · 165 阅读 · 0 评论 -
CF1481F AB Tree
给定一棵 nnn 个节点的树,根为 111 ,每个节点会分配到一个字符 或 。要求整棵树中字符 的数量为 xxx ,字符 的数量为 n−xn-xn−x 。定义节点 vvv 上的字符串:请为每个节点分配字符,在满足字符 , 数量要求的前提下,使得所有节点上的字符串的种类最少。神仙构造设最大深度为ddd,容易发现答案的下界肯定为ddd,具体只要每一层都染成一个颜色就行了,我们再分析一下上界,根据手玩和猜测,可以发现上界应该就是d+1d+1d+1的,考虑答案是d+1d+1d+1时应该是个什么情况,首原创 2022-06-21 15:39:04 · 92 阅读 · 0 评论 -
P6758 [BalticOI2013] Vim
给定一个长度为 NNN 的字符串 SSS,Victor 的目标是将其中的 全部删除,而不删除其他字符。Victor 使用 来解决这个问题。然而,Victor 并不熟悉 ,他只知道这里面的三个指令:tips:\text{tips:}tips:一次fff操作代价是222,一开始看成111得到了一些假结论,给AAA组口胡时锅了不难想到一个暴力dpdpdp,设fi,jf_{i,j}fi,j表示前iii个位置的eee都已经被删了,当前光标跳到了位置jjj的最小代价,然后就可以做到O(n2v)O(n^2v)O原创 2022-06-19 10:06:59 · 165 阅读 · 0 评论 -
P8294 [省选联考 2022] 最大权独立集问题
给出一个二叉树,每个点有点权did_idi,按顺序切断它的n−1n−1n−1条边,代价是边所连的两个点的权值和,且断边之后两点会交换权值,你的目的是最小化权值和。n≤5e3n\le5e3n≤5e3实乃毒瘤dpdpdp很容易想到树形dpdpdp,但是发现很难设置状态,题目中有一个重要条件,该树是棵二叉树,不妨先观察不同情况的不同短边顺序的点的移动情况不难发现无论是什么情况,当且仅当一个点经过父边从子树外进来到位置vvv,一个点uuu经过父边从子树内出去,且它们的lcalcalca为rrr,即当前讨论原创 2022-06-12 12:07:03 · 263 阅读 · 0 评论 -
slope trick
最近校内模拟赛遇到这个东西,直接一波操作让一个O(n5)O(n^5)O(n5)的算法优化到了O(nlog2n)O(n\log^2 n)O(nlog2n),我大受震撼,赶紧去网上学了学slope trickslope\ trickslope trick并不是一种算法,而是解决凸函数dpdpdp的一种技巧,直接上题目例1 CF713c给你nnn个整数aia_iai,每次可以消耗111的代价使某一个数+1+1+1或者−1-1−1,让你求出使得aia_iai不下降的最小代价n≤1e原创 2022-05-25 21:14:09 · 120 阅读 · 0 评论 -
四边形不等式优化
转移形如f(i,j)={mini<k≤jf(i,k−1)+f(k,j)+w(i,j),i<j0,i=j∞,i>j f(i,j)=\left\{\begin{aligned}\min_{i<k\le j} f(i,k-1)+f(k,j)+w(i,j),i<j\\0,i=j\\\infty,i>j\end{aligned}\right.f(i,j)=⎩⎪⎪⎨⎪⎪⎧i<k≤jminf(i,k−1)+f(k,j)+w(i,j),i<j0,i=j∞,原创 2022-05-21 13:27:50 · 50 阅读 · 0 评论 -
P8340 [AHOI2022] 山河重整
P8340 [AHOI2022] 山河重整题目大意取一个[1,n][1,n][1,n]的数的集合SSS,如果SSS中的一个子集的和等于xxx,称SSS可以还原xxx,问有多少个子集SSS可以还原[1,n][1,n][1,n]题解肯定要把这个条件转化成一个比较好处理的充要条件,如果有一个集合SSS中的数从小到大排列为x1,x2⋯xnx_1,x_2\cdots x_nx1,x2⋯xn,考虑这样一件事,假设前jjj个数能够还原[1,∑i=1jxi][1,\sum_{i=1}^jx_i][1,∑i=1原创 2022-05-19 12:38:01 · 140 阅读 · 0 评论 -
「JOISC 2022 Day1」错误拼写
题目大意不想胡了,「JOISC 2022 Day1」错误拼写题解先把限制转化,假定有一组限制aia_iai和bib_ibi,满足ai<bia_i<b_iai<bi,不难发现Tai≤TbiT_{a_i}\le T_{b_i}Tai≤Tbi这个条件可以转化成,在ai,bia_i,b_iai,bi之间的字符串,要么全部相等,否则一定找得到一个i∈(ai,bi]i\in(a_i,b_i]i∈(ai,bi]使得si≠si−1s_i\not =s_{i-1}si=原创 2022-04-06 15:35:39 · 392 阅读 · 0 评论 -
ARC101E Ribbons on Tree
题目大意给你一棵有nnn个点的树,nnn为偶数,点和点之间两两配对,配对的点之间的边被覆盖,问有多少种配对方式使得每一条边都被覆盖题解先讲讲我的暴力做法,想这道题的时候怎么都没想到容斥,只想到了一个暴力dpdpdp做法,设fu,jf_{u,j}fu,j表示uuu的子树内,还有jjj个点需要与子树外的点配对,不难发现,除了根外,只要每个点的子树内都有与外面匹配的点,那每一条边都会被覆盖,所以再从儿子vvv转移到uuu的时候,忽略fv,0f_{v,0}fv,0带来的影响即可,实现时可以直接fv,0=0原创 2022-03-19 16:43:59 · 123 阅读 · 0 评论 -
CF1647F Madoka and Laziness
题目大意给你一个长度为nnn的序列,序列上每个数互不相同,如果有一个序列中有满足a1<a2<⋯<ai>⋯>ana_1<a_2<\cdots<a_i>\cdots>a_na1<a2<⋯<ai>⋯>an的关系的话,那么称这个序列是好的,把原序列分成两个goodgoodgood子序列,第一个子序列的最大值和第二个子序列最大值的不同对个数,(a,b)(a,b)(a,b)和(b,a)(b,a)(b,a)视为同一对题解原创 2022-03-16 20:49:20 · 425 阅读 · 0 评论 -
CF1649F Serious Business
题目大意给你一个333行nnn列的网格,每个网格上有一个数,从左上角出发,终点在右下角,每次只能往右走和往下走,一开始第二行的网格是不允许经过的,有qqq个操作,可以花费kkk的代价使lll到rrr列的第二行的网格变得允许经过,问你经过网格数的总和-花费的总代价的最大值题解从(2,i)(2,i)(2,i)进入第三行的话接下来的决策就确定了,考虑设fif_ifi表示走到(2,i)(2,i)(2,i)的最大分数,对于一个操作(l,r,k)(l,r,k)(l,r,k)和一个iii,有两个可行转移fi=m原创 2022-03-09 21:07:06 · 237 阅读 · 0 评论 -
Slope trick总结
最近校内模拟赛遇到这个东西,直接一波操作让一个O(n5)O(n^5)O(n5)的算法优化到了O(nlog2n)O(n\log^2 n)O(nlog2n),我大受震撼,赶紧去网上学了学slope trickslope\ trickslope trick并不是一种算法,而是解决凸函数dpdpdp的一种技巧,直接上题目codeforces713c题目大意:给你一个nnn个整数aia_iai,每次可以消耗111的代价使某一个数+1+1+1或者−1-1−1,让你求出使得aia_iai不原创 2022-03-06 09:36:03 · 535 阅读 · 0 评论 -
ARC118E Avoid Permutations
有一个(n+2)(n+2)(n+2)(n+2)(n+2)(n+2)的网格,有一个排列PnP_nPn,(i,Pi)(i,P_i)(i,Pi)是一个障碍,设f(P)f(P)f(P)表示,不经过障碍的从(0,0)(0,0)(0,0)走到(n+1,n+1)(n+1,n+1)(n+1,n+1)的方案数,PPP的部分位置已经给出,求∑f(P)\sum f(P)∑f(P)考虑计算每一条路径,有多少种可能使得PPP使得该路径不经过障碍,直接计算比较困难,想到容斥来弱化限制,如果我们能求出g(k)g(k)g(k)表示有至原创 2022-03-03 20:46:10 · 300 阅读 · 0 评论 -
ARC117E Zero-Sum Ranges 2
每次遇到这种奇奇怪怪的dpdpdp都不会做……题目大意给定n,kn,kn,k,问你有多少个长度为2n2n2n的序列{a2n}\{a_{2n}\}{a2n},满足∀1≤i≤2n,i∈Z,ai∈{1,−1}\forall 1\le i\le 2n,i\in \mathbb Z,a_i\in\{1,-1\}∀1≤i≤2n,i∈Z,ai∈{1,−1},111和−1-1−1的个数都为nnn,∑i=lrai=0\sum_{i=l}^ra_i=0∑i=lrai=0的对数恰好为kkk题解设si=∑j=1ia原创 2022-02-17 17:16:25 · 162 阅读 · 0 评论 -
Codeforces Round #761 (Div. 2) E. Christmas Chocolates
观察连边方式,对于一个点i≥1i\ge 1i≥1,不难发现最多只有一个点j<ij<ij<i与iii连边,所以这个图一定是一棵树,每次减小都至少减半,所以点iii的深度是≤logi\le\log i≤logi的,跟题目有关的点数就只有nlognn\log nnlogn级别个,把它们全部找出来,做一遍树形dpdpdp即可...原创 2021-12-22 12:43:43 · 158 阅读 · 0 评论 -
CF1603C Extreme Extension
不难发现分裂一个数最优的分裂一定是尽量平均的分裂,然后小的在前,大的在后,考虑如何求一个序列的最小操作数,容易想到一个贪心策略,从后往前,如果当前这个数比后面的数大,找到一个最小的kkk使得,⌈aik⌉≤ai+1\lceil\frac{a_i}{k}\rceil\le a_{i+1}⌈kai⌉≤ai+1,然后将其分成kkk个部分,显然这样是对的,然后就可以dpdpdp了,设f(i,j)f(i,j)f(i,j)表示,以iii开头,已经将aia_iai分成jjj个部分的总贡献,由于对于许多不同的jjj,原创 2021-11-10 20:49:48 · 158 阅读 · 0 评论 -
P1979 [NOIP2013 提高组] 华容道
感觉这题实在是妙哉,妙在如何去掉冗余状态。首先我们可以发现除了空位和特殊位其他都是本质相同的,所以容易设出状态fi,j,x,yf_{i,j,x,y}fi,j,x,y表示使特殊位坐标为(i,j)(i,j)(i,j),空位坐标为(x,y)(x,y)(x,y)的最少时间,该dpdpdp可以使用dfsdfsdfs或bfsbfsbfs转移,时间复杂度为O(n2m2)O(n^2m^2)O(n2m2)。过不了,我们可以想怎么去掉冗余状态。只有当空位在特殊位的上下左右时,特殊位才能移动,而空位是可以随意移动的,那当空原创 2021-01-17 10:02:17 · 261 阅读 · 1 评论