题链 dp[x] 表示以 x 为进化终点能取得的最大进化次数; 可以发现 dp[x] 等于 树上x的前缀最大值 +1; 但是不可能递归寻找x的父亲直到根节点,因为会超时; 所以采用重链剖分+线段树维护前缀最大值,复杂度O(nlogn*logn); #include <bits/stdc++.h> u ...
分类:
其他好文 时间:
2021-05-24 14:49:30
阅读次数:
0
#include <iostream> #include <cstring> #include <cmath> using namespace std; using ll=long long ; const int maxn=1e3+10; int dp[maxn][maxn]; int sum[m ...
分类:
其他好文 时间:
2021-05-24 13:59:03
阅读次数:
0
差一点就是差很多! 今天打cf感觉不是很认真,而且做完两题之后就跟榜走,看D,能感觉出D是个dp,但是就是没思路,看了好久,又回头做C,第一遍写完只有两分钟了,而且我还有一个小地方写错了(两个变量位置不对),但是已经没办法改了,所以就感觉做的很不好 C题从第一个开始走,如果是想左的就看前面有没有没消 ...
分类:
其他好文 时间:
2021-05-24 13:07:29
阅读次数:
0
补题链接:Here 算法涉及:DP + 离散化 \(l\) 的范围太大,无法作为数组下标,所以先离散化,再DP。两点间的距离d大于t时,一定可以由 \(d\ \%\ t\) 跳过来,所以最多只需要t+d%t种距离的状态就可以表示这两个石子之间的任意距离关系。这样就把题目中的 \(10^9\) 压缩成 ...
分类:
其他好文 时间:
2021-05-24 12:38:52
阅读次数:
0
前言 很基础的一道树形DP题。 题目 AtCoder 题目大意: 给定一棵 \(N\) 个点的带权树,询问每个无序点对间的异或距离和。答案对 \(10^9+7\) 取模。 \(2\le N\le 2\times 10^5;0\le w_i\le 2^{60}.\) 讲解 先考虑边权是 \(0,1\) ...
分类:
其他好文 时间:
2021-05-24 12:25:02
阅读次数:
0
原题链接 题意:给出一棵树,边权全为 \(1\),要求出所有的距离为 \(k\) 的点对。 题解:暴力树上 \(dp\) 真的没想到,\(dp_{i,j}\) 代表的是距离 \(i\) 点的距离为 \(k\) 的点对数量。 代码: #include <iostream> #include <bits ...
分类:
其他好文 时间:
2021-05-24 08:40:27
阅读次数:
0
A Daily Topic # 3 序列最大收益 给定一个长度为 m 的整数序列 a1,a2,…,am。 序列中每个元素的值 ai 均满足 1≤ai≤n。 当一个值为 i 的元素和一个值为 j 的元素相邻时,可以产生的收益为 wi,j。 现在,我们可以从序列中删除最多 k 个元素,删除一些元素后,原 ...
分类:
其他好文 时间:
2021-05-24 08:34:05
阅读次数:
0
补题链接:Here 转移方程的具体含义我在代码注释里写出来了, 很好理解 这道题的难点在于如何表示状态, 一旦找到状态表示方法 只要根据题意做转移就行了 最后的答案就是 \(dp[n][0][0] + dp[n][1][0]\) 即最后一个位置有火的方案数加上最后一个位置没有火的方案数 注意不要忘了 ...
分类:
其他好文 时间:
2021-05-24 08:32:39
阅读次数:
0
#思路 将动态规划化为两个阶段 1.状态表示 f[i]表示的集合状态方程 属性:Max,Min,Count 2.状态计算 将f[i]分为几个子集去计算,要不重复不遗漏。如果是求Max,Min可重复 一般找最后一个不同点划分集合。 #01背包问题 https://www.acwing.com/prob ...
分类:
其他好文 时间:
2021-05-24 08:16:26
阅读次数:
0
###闫氏DP分析法 DP问题没有固定的模板,和贪心一样是一种思想。下面是DP问题的常用分析套路: ###01背包 很早之前写过关于01背包的题解,但是当时的理解很杂乱。这次用Y总的方法重新理解这个问题,感觉比较清晰。 直接上代码: #include<cstdio> #include<iostrea ...
分类:
其他好文 时间:
2021-05-24 07:52:45
阅读次数:
0