日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法

發(fā)布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【BZOJ2500】幸福的道路

Description

小T與小L終于決定走在一起,他們不想浪費在一起的每一分每一秒,所以他們決定每天早上一同晨練來享受在一起的時光. 他們畫出了晨練路線的草圖,眼尖的小T發(fā)現可以用樹來描繪這個草圖. 他們不愿枯燥的每天從同一個地方開始他們的鍛煉,所以他們準備給起點標號后順序地從每個起點開始(第一天從起點一開始,第二天從起點二開始……). 而且他們給每條道路定上一個幸福的值.很顯然他們每次出發(fā)都想走幸福值和最長的路線(即從起點到樹上的某一點路徑中最長的一條). 他們不愿再經歷之前的大起大落,所以決定連續(xù)幾天的幸福值波動不能超過M(即一段連續(xù)的區(qū)間并且區(qū)間的最大值最小值之差不超過M).他們想知道要是這樣的話他們最多能連續(xù)鍛煉多少天(hint:不一定從第一天一直開始連續(xù)鍛煉)? 現在,他們把這個艱巨的任務交給你了!

Input

第一行包含兩個整數N, M(M<=10^9). 第二至第N行,每行兩個數字Fi , Di, 第i行表示第i個節(jié)點的父親是Fi,且道路的幸福值是Di.

Output

最長的連續(xù)鍛煉天數

Sample Input

3 2
1 1
1 3

Sample Output

3
數據范圍:
50%的數據N<=1000
80%的數據N<=100 000
100%的數據N<=1000 000

題解:這題顯然可以被分成兩個子任務

1.求樹上距離點i最遠的點到i的距離

方法:維護每個點子樹中到這個點距離的最大值和次大值,然后搞一搞~

2.求最長的一段區(qū)間,使得區(qū)間中最大值和最小值的差≤M

方法:先用RMQ求出區(qū)間最大值最小值,然后上雙指針法

#include <cstdio> #include <cstring> #include <iostream> using namespace std; const int maxn=1000010; int n,m,cnt,l,r,ans; int fa[maxn],to[maxn<<1],next[maxn<<1],head[maxn]; int d1[maxn],d2[maxn],q[maxn],from[maxn]; int Log[maxn],dm[maxn][20],dn[maxn][20]; void updata(int x,int tmp) {if(d1[x]<tmp) d2[x]=d1[x],d1[x]=tmp;else d2[x]=max(d2[x],tmp); } void dfs1(int x) {int i,tmp;q[++q[0]]=x;for(i=head[x];i!=-1;i=next[i])dfs1(to[i]),updata(x,d1[to[i]]+from[to[i]]); } void add(int a,int b) {to[cnt]=b;next[cnt]=head[a];head[a]=cnt++; } int gm(int a,int b) {int k=Log[b-a+1];return max(dm[a][k],dm[b-(1<<k)+1][k]); } int gn(int a,int b) {int k=Log[b-a+1];return min(dn[a][k],dn[b-(1<<k)+1][k]); } int main() {scanf("%d%d",&n,&m);int i,j,a,b,c;memset(head,-1,sizeof(head));for(i=2;i<=n;i++){scanf("%d%d",&fa[i],&from[i]);add(fa[i],i);}dfs1(1);for(i=2;i<=n;i++){if(d1[fa[q[i]]]==d1[q[i]]+from[q[i]]) updata(q[i],d2[fa[q[i]]]+from[q[i]]);else updata(q[i],d1[fa[q[i]]]+from[q[i]]);}for(i=1;i<=n;i++) dm[i][0]=dn[i][0]=d1[i];for(i=2;i<=n;i++) Log[i]=Log[i>>1]+1;for(j=1;(1<<j)<=n;j++){for(i=1;i+(1<<j)-1<=n;i++){dm[i][j]=max(dm[i][j-1],dm[i+(1<<j-1)][j-1]);dn[i][j]=min(dn[i][j-1],dn[i+(1<<j-1)][j-1]);}}int h=1;ans=-1;for(i=1;i<=n;i++){while(gm(h,i)-gn(h,i)>m) h++;ans=max(ans,i-h+1);}printf("%d",ans);return 0; }

轉載于:https://www.cnblogs.com/CQzhangyu/p/6819604.html

總結

以上是生活随笔為你收集整理的【BZOJ2500】幸福的道路 树形DP+RMQ+双指针法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 伊人9 | 日韩极品少妇 | 亚洲春色在线 | 免费观看高清在线 | 日本999视频 | 法国空姐在线观看视频 | 欧美日韩一区二区视频观看 | 蜜芽在线视频 | 国产人澡人澡澡澡人碰视频 | 老版k8经典电影 | 国产精品亚洲天堂 | 黑白配av | 天天操天天舔天天干 | 久久久剧场 | 日韩黄色网页 | 婷婷成人av| 亚洲视频高清 | 国产精品一区二区免费在线观看 | www.av777| 综合久久2o19 | 精品日本一区二区三区在线观看 | 国产成人欧美 | 日韩最新网址 | 日韩久久精品一区二区 | 一本色道久久综合亚洲精品酒店 | 国产鲁鲁视频在线观看免费 | 久久久久99| 精品久久中文 | 九九热视频免费 | 花房姑娘免费观看全集 | 欧美二区三区 | 波多野结衣一区二区在线 | 中文字幕av一区二区三区人妻少妇 | 日韩激情电影在线 | 丁香花激情网 | 性高潮久久久久久 | 成人国产免费 | 一本大道东京热无码 | www色日本 | 香蕉久久夜色精品升级完成 | 九九爱精品 | 伊人影院在线视频 | 日本精品在线播放 | 在线看成人av | 色综合av| 亚洲欧洲综合在线 | 精品国产aⅴ一区二区三区四川人 | 亚洲熟妇av一区二区三区漫画 | 亚洲精品乱码久久 | 中文字幕不卡视频 | 久操精品 | 人妻体内射精一区二区 | 国产专区在线播放 | 二区在线播放 | 伊人国产视频 | 久久精品欧美日韩精品 | 黄色av软件 | 一级片福利 | 伊人成人22 | 欧美日韩在线不卡 | 992tv在线影院 | 国内精品视频一区二区三区 | 亚洲天堂视频在线 | 亚洲成人午夜在线 | 韩国av电影在线观看 | 成人羞羞国产免费动态 | 国产 丝袜 欧美中文 另类 | 中文字幕日韩人妻在线视频 | 自拍偷拍小视频 | 日本真人做爰免费视频120秒 | av怡红院| 国产特级黄色片 | 97视频在线观看免费高清完整版在线观看 | 免费在线观看黄视频 | 四虎com| 亚洲欧美另类日本 | 五月婷婷激情综合 | 91视频a| 11一12免费毛片 | xxx在线播放| 精品人妻一区二区三区含羞草 | 91亚洲国产成人久久精品网站 | 欧美成人生活片 | 亚洲精品一二三四区 | 成人免费大片黄在线播放 | 男女69视频| 姐姐你真棒插曲快来救救我电影 | 久久在线免费观看 | 校霸被c到爽夹震蛋上课高潮 | 日本va欧美va国产激情 | 日韩字幕在线 | 男女无遮挡免费视频 | 国产成人av一区二区三区不卡 | 视频福利在线观看 | 啦啦啦视频在线观看 | 午夜啊啊啊 | 澳门黄色 | 欧美日韩制服 | 欧美影院一区二区三区 |