[BZOJ 2500] 幸福的道路】的更多相关文章

照例先贴题面(汪汪汪) 2500: 幸福的道路 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 368  Solved: 145[Submit][Status][Discuss] Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. 他们不愿枯燥的每天从同一个地方开始他们的锻炼,所以他们准备给起点标号后…
考试的时候打了个树链剖分,而且还审错题了,以为是每天找所有点的最长路,原来是每天起点的树上最长路径再搞事情.. 先用dfs处理出来每个节点以他为根的子树的最长链和次长链.(后面会用到) 然后用类似dp的方法把每个节点的最长路径求出来. 下面是具体解释,请思考 以一个节点为例(w为它与父亲节点道路的权值) 一.如果它父亲节点的最长路径不过它 那么它最长路径等于它父亲最长路径+w(自己画图即可理解,往上走的) 它的次长路径等于它的最长链(只能往下走) 二.如果过它 那么它的最长路径有两种可能 ①它的…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2500 题解: DFS,单调队列 首先有一个结论,距离树上某一个点最远的点一定是树的直径的一个端点. 然后就3个DFS求出直接并得到D[i]数组表示i点到最远的点的距离. 然后就用两个单调队列分别维护一个单减的最大值和一个单增的最小值, 以便求出以i位置结尾的最长合法区间. 代码: #include<cstdio> #include<cstring> #include<i…
首先明确:树上任意一点的最长路径一定是直径的某一端点. 所以先找出直径,求出最长路径,然后再求波动值<=m的最长区间 #include<cstdio> #include<cstring> #include<iostream> #include<cmath> #include<algorithm> #include<ctime> #include<set> #define N 1000005 using namespa…
structHeal { priority_queue<int> real; priority_queue<int> stack; void push(int x){ real.push(x); } void pop(int x){ stack.push(x); } int top(){ &&stack.empty()==&&real.top()==stack.top()) real.pop(),stack.pop(); if(real.empty(…
树形DP+单调队列优化DP 好题(也是神题……玛雅我实在是太弱了TAT,真是一个250) 完全是抄的zyf的……orz我还是退OI保平安吧 第一步对于每一天求出一个从第 i 个点出发走出去的最长链的长度,树形DP解决…… g[x][0]表示从x的子树中,x到叶子的最长链,g[x][1]表示次长链.(用儿子更新父亲) f[x]表示从x向上走到某个父亲,再向下的最长链.(用父亲更新儿子) 这个DP是通过两次从根出发的dfs实现的. 那么我们现在就得到了a[i]=max(f[i],g[i][0])表示…
题解: 一道不错的题目. 树DP可以求出从每个点出发的最长链,复杂度O(n) 然后就变成找一个数列里最长的连续区间使得最大值-最小值<=m了. 成了这题:http://www.cnblogs.com/zyfzyf/p/4008295.html 代码: #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #includ…
2500: 幸福的道路 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 434  Solved: 170[Submit][Status][Discuss] Description   小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. 他们不愿枯燥的每天从同一个地方开始他们的锻炼,所以他们准备给起点标号后顺序地从每个起点开始…
2500: 幸福的道路 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 474  Solved: 194[Submit][Status][Discuss] Description   小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. 他们不愿枯燥的每天从同一个地方开始他们的锻炼,所以他们准备给起点标号后顺序地从每个起点开始…
[BZOJ2500]幸福的道路 Description 小T与小L终于决定走在一起,他们不想浪费在一起的每一分每一秒,所以他们决定每天早上一同晨练来享受在一起的时光. 他们画出了晨练路线的草图,眼尖的小T发现可以用树来描绘这个草图. 他们不愿枯燥的每天从同一个地方开始他们的锻炼,所以他们准备给起点标号后顺序地从每个起点开始(第一天从起点一开始,第二天从起点二开始……). 而且他们给每条道路定上一个幸福的值.很显然他们每次出发都想走幸福值和最长的路线(即从起点到树上的某一点路径中最长的一条). 他…