随笔分类 -  记忆化&动态规划

1 2 3 4 5 ··· 7 下一页
摘要:Link 一道很有意思的min-max博弈 用树上dp来解决,那么显然的,当前节点是谁取的会影响答案,dp2i,j表示取当前阶段,被Alice/Bob取走的结果, 并且这个题是取子树上任意的节点,那么还需要保存子树上的信息,故使用dpi,j记录下子树中的Alice/Bob 阅读全文
posted @ 2023-12-11 21:38 Simex 阅读(15) 评论(0) 推荐(0) 编辑
摘要:Link 这个题有一个很特殊的点,就是最大值不会超过28,可以想一下最多可以合并多少次。 那么常规的区间dp是不能使用的,就要采用特殊的形式, 因为很难的确定应该怎么转移,那么就换一种思路,转移的对象变成另外一个端点。 dpi,j 表示i在左边,达到j的话的右端点位置 阅读全文
posted @ 2023-09-27 16:43 Simex 阅读(11) 评论(0) 推荐(0) 编辑
摘要:[Linkkkkkkkkkkkk](https://atcoder.jp/contests/abc311/tasks/abc311_e) 这其实是个dp问题 可以拆成一个个dp小问题,然后求和,这个小问题就是以(i,j)为右下角方块下会有多少矩形,然后把每一个位置加起来就行了。 应注意到以下命题 阅读全文
posted @ 2023-07-25 22:06 Simex 阅读(29) 评论(0) 推荐(0) 编辑
摘要:Jisoo 我们来想一下序列上的O(nlogn)是怎么实现的 每次二分,把当前节点插进去替换,来让答案尽可能的更优。 换到树上呢?对于以u作为根节点的子树,我们可以发现去掉U其实都无所谓了,子树之间没有相互的影响,那就开个集合全扔进去就行了 然后放进u,并且按照类似于序列情况的方法进行 阅读全文
posted @ 2021-11-08 08:17 Simex 阅读(28) 评论(0) 推荐(0) 编辑
摘要:Jisoo 通常来讲这种题可以按照边来考虑 当然也可以按照点对。 对于任意一个点对,在新图上的距离是在原图上的一半上取整,这样,我们可以先把原来的距离都求出来,奇数点和偶数点求出来并且化简一波式子。 #include<cstdio> #include<iostream> #include<cstri 阅读全文
posted @ 2021-11-07 19:12 Simex 阅读(22) 评论(0) 推荐(0) 编辑
摘要:Rose 不是一般的01背包 因为有后效性,也就是因为重量可以是负的(钩子越放越多) 为了抵消这种影响,按照钩子数量从大到小排序 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmat 阅读全文
posted @ 2021-11-05 12:47 Simex 阅读(31) 评论(0) 推荐(0) 编辑
摘要:Jennie 经过一番思考,我们可以意识到最后数列里肯定只会有0,1,1,这样我们就对此进行dp #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using na 阅读全文
posted @ 2021-10-21 23:12 Simex 阅读(32) 评论(0) 推荐(0) 编辑
摘要:Jennie 转移的时候要知道区间最值 那何不利用线段树来解决 O(nlogn) #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace 阅读全文
posted @ 2021-10-21 23:10 Simex 阅读(30) 评论(0) 推荐(0) 编辑
摘要:Jennie 因为要记录余数的问题,不能单纯追求最大 那么就加上一维来记录维数 再开一个数组记录是怎么转移的 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #includ 阅读全文
posted @ 2021-10-21 23:00 Simex 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Jennie 搞出一个二维dp'还是比较显然的 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> #define int long l 阅读全文
posted @ 2021-10-21 22:59 Simex 阅读(36) 评论(0) 推荐(0) 编辑
摘要:Lisa 删边似乎挨个删复杂度也不会高到离谱 毕竟也就是O(2n)的事。,因为显然可以想到先删点权最大的点,然后拓扑排序缩点啥的来一波 但是也可以从边的考虑,每一条边只会被删一次,且应会是在删两边较大的那个点的点权的时候被删,这样从边的视角考虑就省事了。 #include<cstdio> #i 阅读全文
posted @ 2021-10-20 16:03 Simex 阅读(27) 评论(0) 推荐(0) 编辑
摘要:Lisa 如果真的要枚举,排序暴力硬做的话肯定会挂掉 那么就是要优化的,显然划分一个2c的序列,答案不回比划分两个c的更优 可以画个图证明一下 而划分成小于c的序列,就相当于划分成一堆1的序列 划分成c-2c的序列呢?显然是不如划分成c和另外一个,肯定不会更差 这样的话就检查划分成c和1就可以解决了 阅读全文
posted @ 2021-10-20 15:55 Simex 阅读(28) 评论(0) 推荐(0) 编辑
摘要:JIsoo 期望得分要dp,然后期望长度是有关系的 那就一块dp #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> using nam 阅读全文
posted @ 2021-10-19 16:01 Simex 阅读(30) 评论(0) 推荐(0) 编辑
摘要:JIsoo 就是一个背包 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> using namespace std; #define 阅读全文
posted @ 2021-10-19 16:00 Simex 阅读(26) 评论(0) 推荐(0) 编辑
摘要:JIsoo 关键在于压缩长度 不会证明怎么办 感性理解开个大数st10 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> usin 阅读全文
posted @ 2021-10-19 15:58 Simex 阅读(31) 评论(0) 推荐(0) 编辑
摘要:JIsoo 首先考虑floyd本质就是dp,然后扔进新的一维fi,j,k,表示i和j之间经过k条边的最短路 枚举的时候是5个for?那也太疯狂了。 考虑一下如果i和j经过k能够作为当前边数的最短路的话,如果k和i,j距离不是1,那么在这一条路径上,一定可以用距离i为1的那个点来更新,这样的 阅读全文
posted @ 2021-10-19 14:27 Simex 阅读(35) 评论(0) 推荐(0) 编辑
摘要:Jisoo 找一个最长的周期 就是要找最短的border然后加上中间的部分 这样 kmp出动 然后发现可以 “记忆化”一波进行优化 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<alg 阅读全文
posted @ 2021-10-17 17:42 Simex 阅读(38) 评论(0) 推荐(0) 编辑
摘要:Jisoo 作为dp来说这个题没啥意思 但是从中我们可以学到数学证明对于dp的指导 例如,只要 ajai 都不等于 0 那么这个序列是对数增长 这样似乎暴力也不怎么暴力了 #include<iostream> #include<cstdio> #include<cstri 阅读全文
posted @ 2021-10-17 17:34 Simex 阅读(29) 评论(0) 推荐(0) 编辑
摘要:Lisa 尺取法搞一波 然后前缀和优化一波 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int a[500005]; bo 阅读全文
posted @ 2021-10-17 11:49 Simex 阅读(36) 评论(0) 推荐(0) 编辑
摘要:Lisa 显然两个在一起的空格是没有意义的。 所以空格的相对的一定是字符 这样在匹配的时候考虑对于两个字符,加不加空格和加在哪里 因为连续的空格有额外贡献 所以要记录有没有和在哪里 #include<iostream> #include<cstdio> #include<cstring> #incl 阅读全文
posted @ 2021-10-16 17:28 Simex 阅读(38) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 7 下一页
点击右上角即可分享
微信分享提示