这题卡常数了,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. SetFileAttributes 设置属性

    #include <Windows.h> #include <tchar.h> int WINAPI _tWinMain(HINSTANCE hInstance, HINSTA ...

  2. php----------php安装xhprof扩展和简单使用

    1.下载源码包 https://github.com/longxinH/xhprof  (wget https://github.com/longxinH/xhprof/archive/master. ...

  3. mysql添加用户,授权,刷新权限

    创建用户 CREATE USER 'test'@'localhost' IDENTIFIED BY '123456'; 赋权 GRANT ALL PRIVILEGES ON *.* TO 'test' ...

  4. CentOS7编译安装SVN(subversion1.9.7)

    参考连接0:http://www.programering.com/a/MDMzYDMwATg.html参考连接1:http://www.zsythink.net/archives/13180.系统信 ...

  5. sitecore开发入门Sitecore的CRUD操作 - 第二部分

    在上一篇(sitecore开发入门Sitecore的CRUD操作 - 第一部分)中我们讨论了如何使用Sitecore Item API,Glass,Fortis和Synthesis在Sitecore中 ...

  6. 手把手教你如何安装Pycharm

    手把手教你如何安装Pycharm——靠谱的Pycharm安装详细教程     今天小编给大家分享如何在本机上下载和安装Pycharm,具体的教程如下: 1.首先去Pycharm官网,或者直接输入网址: ...

  7. C#WFM关于PICBOX 再DIP界面放大125%后,图片显示不完整

    外观哪里选中Zoom,就好

  8. Lamda Expression

    Expression<Func<Student, bool>> filter=s=>s.Name.Contains("a") && s ...

  9. IP通信基础学习第七周(下)

    H3C的配置指令包括:基本配置,查看指令,接口配置. 基本配置包括:查看可用指令:进入系统视图,全局配置模式:给设备命名:退回上一层模式:直接退回到用户模式. 查看指令包括:显示设备系统版本信息:显示 ...

  10. CAN双机通讯调试小结(SJA1000与MCP2515通讯)

    2011-12-07 21:36:02. 效果图: 1,51的SJA1000自收自发测试完成,见上一篇小结. 2,SJA1000自测完成后,再自测MCP2515就非常容易.主要是设置工作模式为回环模式 ...