上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 31 下一页
摘要: 解题关键:dfs序将树映射到区间,然后主席树求区间第k小,为模板题。 阅读全文
posted @ 2017-08-25 23:25 Elpsywk 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 题意:求两个排列的最长公共子序列n<=1e5 解题关键:转化为LIS。 最长公共子序列 的 nlogn 的算法本质是 将该问题转化成 最长增序列(LIS),因为 LIS 可以用nlogn实现,所以求LCS的时间复杂度降低为 nlogn。 1. 转化:将LCS问题转化成LIS问题。 假设有两个序列 s 阅读全文
posted @ 2017-08-25 19:18 Elpsywk 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 解题关键:1001=7*11*13,模数非常小,直接暴力lucas。递归次数几乎为很小的常数。最后用中国剩余定理组合一下即可。 模数很小时,一定记住lucas定理的作用 http://acm.xidian.edu.cn/problem.php?id=1227 阅读全文
posted @ 2017-08-25 18:58 Elpsywk 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 解题关键:了解转移方程即可。 转移方程:$dp[l][r] = dp[l + 1][r - 1] + 2$ 若该区间左右端点成功匹配。然后对区间内的子区间取max即可。 nyoj15:求需要添加的最少的括号数量,用总数减去$dp[0][s.size()-1]$即可。 阅读全文
posted @ 2017-08-24 17:14 Elpsywk 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题意:有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。 解题关键:区间dp,首先枚举区间,再枚举分割点,区间由小到大更新。 转移方程:$dp[l][r] 阅读全文
posted @ 2017-08-24 16:24 Elpsywk 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一棵带权无向树,以及给定节点1,总约束为$m$,找出切断与所有叶子节点联系每条边所需要的最小价值约束。 解题关键:二分答案,转化为判定性问题,然后用树形dp验证答案即可。 dp数组需要开到ll,如果用设inf的解法。 阅读全文
posted @ 2017-08-24 04:23 Elpsywk 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一棵树,带有向边,找出某个点到达所有点需要反转的最少的边。 解题关键:和求树的直径的思路差不多,将求(父树-子树)的最大值改为求特定值。依然是两次dfs,套路解法。 对树形dp的理解:树形dp其实就是将树进行暴力搜索,只是需要理解状态的概念。那些状态已经完成,需要从底还是从顶开始搜索。 阅读全文
posted @ 2017-08-24 01:22 Elpsywk 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 题意:切掉树上的某条边,使分开的两棵树上各点的权值和差值最小。 与hdu2196不同的是,此题是点权,其他无太大差别,注意数据范围。 先求出每个节点的子树权值和,然后自底向上dp即可。取$\min (abs(sum - 2*dp[u]))$ 阅读全文
posted @ 2017-08-23 21:33 Elpsywk 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:求树的重心(删除该点后子树最大的最小) 解题关键:想树的结构,删去某个点后只剩下它的子树和原树-此树所形成的数,然后第一次dp求每个子树的节点个数,第二次dp求解答案即可。 此题一开始一直T,后来加了输入挂才过,第一次见卡cin+关同步的题目。 用scanf试了一下,也可以过,0.5s,看来c 阅读全文
posted @ 2017-08-23 18:08 Elpsywk 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题意:求树中距离每个节点的最大距离。 解题关键:两次dfs,第一次从下向上dp求出每个节点子树中距离其的最大距离和不在经过最大距离上的子节点上的次大距离(后序遍历),第二次从上而下dp求出其从父节点过来的最大距离(先序遍历). 如果vi不是u最长距离经过的节点,$d[{v_i}][2] = dist 阅读全文
posted @ 2017-08-23 16:26 Elpsywk 阅读(162) 评论(0) 推荐(0) 编辑
上一页 1 ··· 18 19 20 21 22 23 24 25 26 ··· 31 下一页