摘要:
感觉其实就是树分治,一次BC的题,感觉这次题目质量比较高,仅代表蒟蒻的看法一次DFS获取每个点到子树的距离不大于K的点的个数,然后一遍BFS获取从每个点父亲不大于K的的个数,层层扩展,还是想说其实就是树分治。。。。。并没有什么DP/*Problem : 5593 ( ZYB's Tree ) ... 阅读全文
摘要:
dp[i][j]代表以s[i][j]字符为右上角的最大对称方阵的尺寸最左边那一列都为1,然后按列更新,代码实现比较简单,感觉有点卡时间,如果对称度很好,时间应该比较高,我只会这种了#include#include#include#include#include#include#include#inc... 阅读全文
摘要:
由于数据量较小,直接二进制模拟全排列过程,进行DP,思路由kuangbin blog得到,膜拜斌神#include#include#include#include#include#includeusing namespace std;struct asd{ char name[105]; ... 阅读全文
摘要:
直接爆搜肯定超时,除非你加了某种凡人不能想出来的剪枝...555因为老鼠的路径上的点满足是递增的,所以满足一定的拓补关系,可以利用动态规划求解但是复杂的拓补关系无法简单的用循环实现,所以直接采取记忆化搜索的方式进行DP,成功避免重叠子问题,避免超时#include#include#include#i... 阅读全文
摘要:
DP[i][j]表示现在开头是i物品,结尾是j物品的最大值,最后扫一遍dp[1][1]-dp[n][n]就可得到答案了稍微想一下,就可以,#include#include#include#include#include#include#include#include#include#includeu... 阅读全文
摘要:
#include#include#include#include#include#include#include#include#include#includeusing namespace std;int dp[25][805],path[25][805];int n,m;int d[205],p... 阅读全文
摘要:
/*96655 's source code for MMemory: 8604 KB Time: 63 MSLanguage: G++ Result: Accepted*/#include#include#include#include#include#include#... 阅读全文
摘要:
这题的意思就是取m个连续的区间,使它们的和最大,下面就是建立状态转移方程dp[i][j]表示已经有 i个区间,最后一个区间的末尾是a[j]那么dp[i][j]=max(dp[i][j-1]+a[j],max(dp[i-1][1..j-1])+a[j])看数据范围,1e6肯定开不下数组,观察发现,dp... 阅读全文
摘要:
一棵树一共有2*(n-1)度,现在的任务就是将这些度分配到n个节点,使这n个节点的权值和最大。思路:因为这是一棵树,所以每个节点的度数都是大于1的,所以事先给每个节点分配一度,答案 ans=f[1]*n先将答案赋值所以接下来研究的就是,将剩下的n-2个度分配即分别看 分配度数为1到n-2的节点的有几... 阅读全文
摘要:
给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多都用字典树,也是醉了/*Problem : 5536 ( Chip Factory ) Jud... 阅读全文