poj3162
这题卡常数了,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的更多相关文章
- poj3162(树形dp+线段树求最大最小值)
题目链接:https://vjudge.net/problem/POJ-3162 题意:给一棵树,求每个结点的树上最远距离,记为a[i],然后求最大区间[l,r]满足区间内的max(a[i])-min ...
- POJ3162 Walking Race(树形DP+尺取法+单调队列)
题目大概是给一棵n个结点边带权的树,记结点i到其他结点最远距离为d[i],问d数组构成的这个序列中满足其中最大值与最小值的差不超过m的连续子序列最长是多长. 各个结点到其他结点的最远距离可以用树形DP ...
- POJ-3162 Walking Race (求树上两点之间最大距离)
题目大意:给一棵树,对于所有的点,找出距它最远点的距离,然后将这些距离排成一列,找出最长的一个区间满足:其中的最大值减去最小值不大于m. 题目分析:两次dfs找出距每个节点的最远距离,然后可以通过维护 ...
- poj3162 Walking Race
题目大意:给一个树形图n个点(n-1条边),XXX要练习竞走,每次选定一个点k作为开始点,每次走从k开始能走的最长的一条路径(不要重边).要求出最长的连续的这样的k,假设连续有kx个,前提:这样kx条 ...
- poj3162(树形dp+优先队列)
Walking Race Time Limit: 10000MS Memory Limit: 131072K Total Submissions: 5409 Accepted: 1371 Ca ...
- poj3162 树形dp|树的直径 + 双单调队列|线段树,好题啊
题解链接:https://blog.csdn.net/shiqi_614/article/details/8105149 用树形dp是超时的,, /* 先求出每个点可以跑的最长距离dp[i][0|1] ...
- [POJ3162]Walking Race(DP + 单调队列)
传送门 题意:一棵n个节点的树.wc爱跑步,跑n天,第i天从第i个节点开始跑步,每次跑到距第i个节点最远的那个节点(产生了n个距离),现在要在这n个距离里取连续的若干天,使得这些天里最大距离和最小距离 ...
- 【POJ3162】Walking Race 树形dp+单调队列+双指针
题目大意:给定一棵 N 个节点的无根树,边有边权,现生成一个序列 d,d[i] 表示 i 号节点到树上其他节点距离的最大值.给定一个 m,求 d 序列中最大值和最小值之差不超过 m 的最长连续段的长度 ...
- [POJ&HDU]杂题记录
POJ2152 树形dp,每次先dfs一遍求出距离再枚举所有点转移即可. #include<iostream> #include<cstdio> #include<cma ...
随机推荐
- CentOS 7 安装Redis4.0
redis是一种内存型的NoSQL数据库,优点是快,常用来做缓存用 redis存储数据的方法是以key-value的形式 value类型支持字符串,列表,哈希等多种类型 环境 : CnetOS7 ...
- 异步 async & await
1 什么是异步 异步的另外一种含义是计算机多线程的异步处理.与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程. 2 异步场景 l 不 ...
- UDP广播 与 TCP客户端 --服务端
随着倒计时的响声,自觉无心工作,只想为祖国庆生. 最近有遇到过这样一个问题,将摄像头识别的行人,车辆实时显示在客户端中.有提供接口,会以Json的数据的形式将实时将识别的对象进行Post提交.所以我们 ...
- svn与cvs的一些比较
所有的文档都显示SVN可以取代CVS,同时SVN的问题和缺点都被隐藏了.不幸的是,我们并不认为SVN是CVS的替代品,尽管很多缺陷都被修改了.更有甚者,它甚至让人重回VSS.CVS和SVN的比较类似与 ...
- 《Whitelabel Error Page 404》 对于Springboot初学者可能出现问题的原因
whitelabel error page异常一定是有原因的,比如,访问路径不对,解析不对,注解忘记引入等.对于初学者,一定要注意一点,程序只加载Application.java所在包及其子包下的内容 ...
- CSS——div垂直居中及div内文字垂直居中
最近做demo时,经常需要div垂直居中或者让div内文字相对div垂直居中.水平居中比较简单,就不多说了,这里主要记录一下垂直居中的一些方法. 一.div垂直居中的一些方法: 1.当height.w ...
- better-scroll 中的img标签无法触发长按保存菜单
better-scroll 默认禁用的多数标签的默认行为,启用默认行为需加如下属性 preventDefaultException: { tagName: /^(IMG|INPUT|TEXTAREA| ...
- latch
signal definition sequence:
- Redis查漏补缺:最易错过的技术要点大扫盲
考虑到绝大部分写业务的程序员在实际开发中使用Redis时,只会Setvalue和Getvalue两个操作,对Redis整体缺乏一个认知.又恰逢笔者有同事下周要去培训Redis,所以笔者斗胆以Redis ...
- [Python数据挖掘]第5章、挖掘建模(下)
四.关联规则 Apriori算法代码(被调函数部分没怎么看懂) from __future__ import print_function import pandas as pd #自定义连接函数,用 ...