这题卡常数了,nlogn链式前向星过了,用vector的O(n)没过。

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <cstring>
#include <map>
#include <queue>
#include <set>
#include <cassert>
#include <stack>
#include <bitset>
#define mkp make_pair
using namespace std;
const double EPS=1e-;
typedef long long lon;
const lon SZ=,SSZ=*SZ,APB=,one=;
const lon INF=0x7FFFFFFF,mod=;
int n,m,dp[SZ][],ans[SZ],cnt;
int head[SZ],nex[SSZ],to[SSZ],wt[SSZ]; void add(int u,int v,int w)
{
++cnt;
nex[cnt]=head[u];
head[u]=cnt;
to[cnt]=v,wt[cnt]=w;
} void init()
{
cin>>n>>m;
memset(head,-,sizeof(head));
for(int i=;i<=n;++i)
{
int a,b;
//cin>>a>>b;
scanf("%d%d",&a,&b);
add(a,i,b);
add(i,a,b);
}
} void dfs1(int x,int p)
{
for(int i=head[x];i!=-;i=nex[i])
{
int t=to[i];
int w=wt[i];
if(t!=p)
{
dfs1(t,x);
if(dp[t][]+w>dp[x][])
{
dp[x][]=dp[x][];
dp[x][]=dp[t][]+w;
dp[x][]=t;
}
else
{
dp[x][]=max(dp[x][],dp[t][]+w);
}
}
}
} void dfs2(int x,int p)
{
for(int i=head[x];i!=-;i=nex[i])
{
int t=to[i];
int w=wt[i];
if(t!=p)
{
if(t!=dp[x][])dp[t][]=max(dp[x][],dp[x][])+w;
else dp[t][]=max(dp[x][],dp[x][])+w;
dfs2(t,x);
}
}
} void work()
{
dfs1(,-);
dfs2(,-);
for(int i=;i<=n;++i)
{
ans[i]=max(dp[i][],dp[i][]);
//cout<<" "<<dp[i][1]<<endl;
}
int ll=,rr=;
multiset<int> st;
st.insert(ans[]);
int res=;
int maxv=*--st.end(),minv=*st.begin();
for(;rr<=n;)
{
++rr;
if(rr>n)break;
st.insert(ans[rr]);
maxv=*--st.end(),minv=*st.begin();
if(maxv-minv<=m)res=max(res,rr-ll+); for(;maxv-minv>m;)
{
st.erase(st.find(ans[ll]));
++ll;
maxv=*--st.end(),minv=*st.begin();
}
maxv=*--st.end(),minv=*st.begin();
if(maxv-minv<=m)res=max(res,rr-ll+);
}
cout<<res<<endl;
} void release()
{ } int main()
{
//std::ios::sync_with_stdio(0);
//freopen("d:\\1.txt","r",stdin);
int casenum;
//cin>>casenum;
//cout<<casenum<<endl;
//for(int time=1;time<=casenum;++time)
//for(int time=1;cin>>n>>m;++time)
{
init();
work();
release();
}
return ;
}

poj3162的更多相关文章

  1. poj3162(树形dp+线段树求最大最小值)

    题目链接:https://vjudge.net/problem/POJ-3162 题意:给一棵树,求每个结点的树上最远距离,记为a[i],然后求最大区间[l,r]满足区间内的max(a[i])-min ...

  2. POJ3162 Walking Race(树形DP+尺取法+单调队列)

    题目大概是给一棵n个结点边带权的树,记结点i到其他结点最远距离为d[i],问d数组构成的这个序列中满足其中最大值与最小值的差不超过m的连续子序列最长是多长. 各个结点到其他结点的最远距离可以用树形DP ...

  3. POJ-3162 Walking Race (求树上两点之间最大距离)

    题目大意:给一棵树,对于所有的点,找出距它最远点的距离,然后将这些距离排成一列,找出最长的一个区间满足:其中的最大值减去最小值不大于m. 题目分析:两次dfs找出距每个节点的最远距离,然后可以通过维护 ...

  4. poj3162 Walking Race

    题目大意:给一个树形图n个点(n-1条边),XXX要练习竞走,每次选定一个点k作为开始点,每次走从k开始能走的最长的一条路径(不要重边).要求出最长的连续的这样的k,假设连续有kx个,前提:这样kx条 ...

  5. poj3162(树形dp+优先队列)

    Walking Race Time Limit: 10000MS   Memory Limit: 131072K Total Submissions: 5409   Accepted: 1371 Ca ...

  6. poj3162 树形dp|树的直径 + 双单调队列|线段树,好题啊

    题解链接:https://blog.csdn.net/shiqi_614/article/details/8105149 用树形dp是超时的,, /* 先求出每个点可以跑的最长距离dp[i][0|1] ...

  7. [POJ3162]Walking Race(DP + 单调队列)

    传送门 题意:一棵n个节点的树.wc爱跑步,跑n天,第i天从第i个节点开始跑步,每次跑到距第i个节点最远的那个节点(产生了n个距离),现在要在这n个距离里取连续的若干天,使得这些天里最大距离和最小距离 ...

  8. 【POJ3162】Walking Race 树形dp+单调队列+双指针

    题目大意:给定一棵 N 个节点的无根树,边有边权,现生成一个序列 d,d[i] 表示 i 号节点到树上其他节点距离的最大值.给定一个 m,求 d 序列中最大值和最小值之差不超过 m 的最长连续段的长度 ...

  9. [POJ&HDU]杂题记录

    POJ2152 树形dp,每次先dfs一遍求出距离再枚举所有点转移即可. #include<iostream> #include<cstdio> #include<cma ...

随机推荐

  1. FG面经Prepare: BST to Double LinkedList

    BST to double linkedlist in inorder traversal sequenceFollow Up: 如果这个BST自带prev, next, 给一个value,插进去这个 ...

  2. laravel----------carbon时间类的使用介绍

    echo Carbon::today();       // 对象 2018-04-17 00:00:00echo Carbon::tomorrow(); // 对象 2018-04-18 00:00 ...

  3. C# 链表反转

    链表反转分这么两种情况, 一种是链表头节点始终前置,那这时候需要传一个头节点特有的标记:(简称:头不转) HEAD->Test1->Test2->Test3->Test4 反转 ...

  4. py001

       pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple -------------------------------- ...

  5. IP地址数据库 | 手机号段归属地数据库 | 行政区划省市区数据库

    2019年4月最新版 IP地址数据库 (全球版·国内版·国外版·掩码版·英文版) 全球旗舰版 454267行   国内精华版 244379行 演示  https://www.qqzeng.com/ip ...

  6. mysql服务启动不了 More help is available by typing NET HELPMSG 3534

    解决方法:参考 注意:如果安装MySQL的时候改了端口(如从3306改成3307),则my.ini配置文件的端口也需要相应的修改

  7. var,dynamic的用法

    private void Form1_Load(object sender, EventArgs e) { var dt = Getuser() as IEnumerable<dynamic&g ...

  8. .NET Core 微服务

    github 上的资源: EshopOnContainers AiurSoft : 微服务框架 Server酱:是一款「程序员」和「服务器」之间的通信软件. http://sc.ftqq.com/3. ...

  9. 使用MSBuild Tools调用csproj项目文件发布网站时$(SolutionDir)宏参数值丢失为空的解决方案

    使用Visual Studio打开解决方案,对<网站项目>右键点击<发布>,一切都是正常的,所有宏都可用,宏参数值也是正确的. 而通过批处理脚本命令调用MSBuild.exe对 ...

  10. 火狐开发----如何快速的安装火狐XPI文件

    第一步:火狐的自动安装扩展程序,https://addons.mozilla.org/zh-CN/firefox/addon/autoinstaller/ 第二步:安装wget工具,这个Linux应该 ...