會時常發生變化。小度熊只能從編號為0的零食機出發,並且每個零食機至多經過一次。另外,小度熊會對某個零食機的零食有所偏愛,要求路線上必須有那個零食機。
為小度熊規劃乙個路線,使得路線上的價值總和最大。
input
輸入資料第一行是乙個整數t(t≤10)
,表示有t組測試資料。
對於每組資料,包含兩個整數n,m(1≤n,m≤100000),表示有n個零食機,m次操作。
接下來n−1行,每行兩個整數x和y(0≤x,y零食機的路線中,價值總和的最大值。
本題可能棧溢位,辛苦同學們提交語言選擇c++,並在**的第一行加上:
`#pragma comment(linker, "/stack:1024000000,1024000000") `
output
對於每組資料,首先輸出一行」case #?:」,在問號處應填入當前資料的組數,組數從1開始計算。
對於每次詢問,輸出從編號為0的零食機出發,必須經過編號為x
零食機的路線中,價值總和的最大值。
sample input
1sample output6 50 1
1 20 3
3 45 3
7 -5 100 20 -5 -7
1 11 3
0 2 -1
1 11 5
case #1:思路:如果記錄每個點到根節點的點權之和的話,那麼修改乙個點的點權就相當於同時修改該子樹的點權,查詢從根節點出發經過點v的路徑的最大點權和就相當於查詢點v的子樹中所有節點中維護的值最大的那個。其實就是區間修改+區間查詢。用dfs序解決區間問題。10227
220
#pragma comment(linker, "/stack:1024000000,1024000000")
#include#include#includeusing namespace std;
typedef long long ll;
const int maxn=1e5+5;
struct node
tree[maxn<<2];
struct edge
edge[maxn<<1];
int n,m,cnt=0,tot=0;
int in[maxn];
int out[maxn];
ll dis[maxn];
ll dist[maxn];
int head[maxn];
ll a[maxn];
inline void addedge(int u,int v)
void dfs(int u,int fa)
void build(int i,int l,int r)
int mid=(l+r)>>1;
build(i<<1,l,mid);
build(i<<1|1,mid+1,r);
tree[i].max=max(tree[i<<1].max,tree[i<<1|1].max);
}inline void down(int i)
void update(int i,int l,int r,ll v)
if(tree[i].lazy)
down(i);
int mid=(tree[i].l+tree[i].r)>>1;
if(r<=mid)
update(i<<1,l,r,v);
else if(l>mid)
update(i<<1|1,l,r,v);
else
update(i<<1,l,mid,v),
update(i<<1|1,mid+1,r,v);
tree[i].max=max(tree[i<<1].max,tree[i<<1|1].max);
}ll query(int i,int l,int r)
inline void prework()
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
dfs(1,0);
build(1,1,n);
}inline void mainwork()
else
}}int main()
}
HDU 5692 Snacks dfs序 線段樹
由於零食被頻繁的消耗和補充,零食機的價值v會時常發生變化。小度熊只能從編號為0的零食機出發,並且每個零食機至多經過一次。另外,小度熊會對某個零食機的零食有所偏愛,要求路線上必須有那個零食機。為小度熊規劃乙個路線,使得路線上的價值總和最大。輸入資料第一行是乙個整數t t 10 表示有t組測試資料。對於...
hdu5692 dfs序線段樹
這是補的知識點,按先序遍歷的順序建立dfs序,用左右兩個值代表整個區間,因為dfs序最重要的特點就是子樹的區間是連續的 建立線段樹時,需要用重新標過的 下標來建立 pragma comment linker,stack 1024000000,1024000000 include include in...
hdu5692 Snacks 線段樹 dfs序
我們維護每個點到根的權值和。詢問過x的路徑中權值最大的,即詢問x的子樹中到根的距離最大的。修改x為y,則x的子樹中的所有點到根的距離都加上了y a x 顯然可以用dfn變成連續區間用線段樹來維護。pragma comment linker,stack 1024000000,1024000000 in...