![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
顾客言
这个作者很懒,什么都没留下…
展开
-
C:Jump and Treasure(单调队列优化DP+调和级数)
然后每次询问又给了限制,这里就用到了调和级数,也就是 n/1+n/2+n/3+n/4+...+n/n 大概在nlogn的级别,而单调队列优化DP 又是O(N)的,这样就可以看似暴力,其实稳过的a掉了。表示以 i 为结尾的最大得分然后枚举前p-1个位置,但是时间肯定不允许,可以想到这类题典型就是单调队列优化的;题意:给你一个0到n的柱子,一开始在0,需要跳到大于n的地方,每个柱子上有个得分,思路:一般很容易想到一个 n*p 时间复杂度的DP ,且限制了最大跳跃步数;原创 2024-04-17 18:45:40 · 158 阅读 · 0 评论 -
Educational Codeforces Round 164 (Rated for Div. 2)
我们考虑一个集合的贡献,如果最大值大于sum的一半,那么值就是max,反之值就是(sum+1)/2。那么我们可以sort a数组枚举最大值,同时简单计数dp统计 各个 总数量的集合的方案数。题意:给你n个颜色不同的小球,以及每种颜色小球的数量,让你求。种集合分割方案的价值和。原创 2024-04-15 19:42:38 · 263 阅读 · 0 评论 -
P1281 书的复制(区间DP+贪心)
然后我们倒叙枚举,每次都选取不超过全局答案的最大值,即可记录区间。状态转移那么仔细想一想,这题需要连续分配人。这里提供一份区间DP,原创 2024-04-11 18:12:28 · 133 阅读 · 0 评论 -
L3-1 那就别担心了(记忆化搜索)
一开始用的反向建边的拓扑,数量应该是没问题的但是,是否自洽还得正向dfs判断一下,不如直接记忆化搜索。这样两条边是不可以的。需要注意的是自洽的判断,如果起点是1,终点是3。那么1->3->2;原创 2024-04-08 11:26:44 · 185 阅读 · 0 评论 -
状态压缩DP
一般设表示状态下,为最后一个最值情况。一般有两种稍微不同的写法,单纯就是写法不同,思路方法都相同。第一个例题为第一种转移方法,有当前转移后面。后面的都是由前面转移目前。原创 2024-04-02 16:19:48 · 187 阅读 · 0 评论 -
计数DP
f(i, j) =f(i - 1, j) +f(i - 1, j - 1) +f(i - 1, j + 1) 转移过来。表示当前点向上走i步且最终在第j列的方案数,我们知道我们每一步都要缩短短距离,也就是向上走,那么我们转移方程也就有了。思路:dx = abs(x1 - x2), dy = abs(y1 - y2), 那么最短距离一定是。,然后就是状态表示了,原创 2024-03-25 10:46:41 · 129 阅读 · 0 评论 -
经典过河问题
2:两个最大的一起过去:先让a[1]带着a[0]过去,再让a[1]回来,再让a[i]和a[i - 1]过去,最后让a[0]回来,每一次要花(a[1] + a[1] + a[i] + a[0])的时间。1:最快的人一个一个送:a[0]带着a[i]去去来来,每一趟要花(a[i] + a[0])的时间。2:让最快的人回来,然后让最慢于次慢的过去,然后次快的过来带着最快的一起回去。首先我们想,应该让最快与次快的先过河,然后让他俩来回的带其他人过河。1:让最快的回来,然后带一个人回去。其实也就是一个贪心题。原创 2024-03-20 20:31:17 · 125 阅读 · 0 评论 -
牛客练习赛122
正着求删除的最小代价不好做,采用逆向思维,求选择一些不相交的线段使得构成一个圆的代价尽量大,最后答案就是所有线段权值之和减去最大代价。很明显,离散化候不同区间值被拉近了距离,但是不相交得还是不相交,所以本题可以离散化。2、选择以为左端点的线段。枚举左端点 所能到达的右端点 v,权值为 w,那么当前的答案。本题的相交比较上一题有点不同,不同在包含的时候端点可以相交,而不包含时端点不可相交。具体的还是区间DP的过程,枚举区间长度 len ,枚举区间左端点 i 和右端点 j。1:不选择以左端点的线段,原创 2024-03-04 17:04:14 · 317 阅读 · 0 评论 -
AtCoder Beginner Contest 336 D - Pyramid
题意:就是给你一个长为n的序列,让你通过两种不限次数的操作 使其变为金字塔序列,(a1<a2<ak>ak-1>ak-2...>an)由于我们有a[4]的限制 ,相当于a[i-1]的最长序列就到 a[ 2 ],不论 a[2]是 1,还是2 ,3都会满足上式;1:a[ i -1 ]<a[ i] 这里到没什么特殊的就是和a[ i ] 这个限制取min。故状态转移方程就只有 dp[ i ]=min(dp[ i-1 ]+1,a[ i ] );由于我们可以使数减一,我们可以让a[ i-1 ]的最长序列 减 1。原创 2024-01-15 10:14:59 · 432 阅读 · 0 评论