小遲修馬路
road.in/.out/.cpp
【問題描述】
⼩小遲生活的城市是1棵樹(樹指的是乙個含有 n 個節點以及 n-1 條邊的無向連通圖),節點編號從 1 到 n,每條邊擁有乙個權值 value,表示通過這條邊的時候你需要交納的金錢(注意,有可能這個值為負數,也就是說你經過這條邊的時候你可以賺錢)小遲是乙個傑出的馬路工,他居住在節點 s,他能夠選擇任意乙個節點m,並將從節點 s 到節點 m 的簡單路徑(簡單路徑指的是不經過同乙個節點兩次)上的所有邊的權值都修改為 0.現在小遲獲得 q 個請求,每個請求都是以 a b 的形式給出,表示小遲的好朋友小早希望從節點 a 走簡單路徑到節點 b,小遲希望能最小化小早需要繳納的錢。
需要注意的是,小遲獲得的這 q 個請求是相互獨立的,也就是說您只需要對於每乙個請求,決定小遲的乙個修路方案,使得小早需要繳納的錢盡可能的少。
【輸入格式】
輸入檔名為 road.in。
第一行三個正整數為 n,q,s。
接下來 n-1 行,每行三個整數 x y z, 表示有一條邊 (x,y),value 為 z。
接下來 q 行,每個兩個正整數 a b,表示請求。
【輸出格式】
輸出檔名為 road.out。
q 行,每行兩個整數,表示需要繳納的最少的錢。
【樣例輸入】
3 2 1
1 2 1
2 3 1
1 21 3
【樣例輸出】00
【樣例解釋】
對於第一次詢問 1 2, 小遲可以修從 1 到 2 的路,從而使得小早不需要
繳納金錢;
對於第二次詢問 1 3, 小遲可以修從 1 到 3 的路,從而使得小早不需要
繳納金錢。
【資料規模及約定】
對於 30% 的資料,n≤1000,q≤1000.
對於 100% 的資料,1≤n,q≤200000,1≤x,y≤n,|z|≤1000.
題解:lca+樹剖維護最大值。這題無根,為了方便以s為根,可以算出每個點到s的dis,然後考慮清零情況,s為x y的lca,y為lca,x為lca,x y的lca在s下方
對於第一種只能選擇清左邊或者清右邊,對於第二三種,清到最小值就行,對於第四種與第一種類似,但是最後結果要再減去dis[lca(x,y)](考試的時候減了兩倍,然後100->0)。
這是lca部分,剩下的就需要樹剖維護dis中的最大值,再用底下點的dis減去就行
**:
#include#include#define lson k<<1,l,mid
#define rson k<<1|1,mid+1,r
#define ls k<<1
#define rs k<<1|1
#define mid ((l+r)>>1)
using
namespace
std;
const
int n=200005,inf=2e9;
intn,m,cnt,s,mi,tot;
int head[n],fa[n][23
],dis[n],dep[n];
intson[n],top[n],val[n],siz[n],id[n];
int tr[n<<2
];struct
nodee[n
<<1
];inline
intread()
while(ch>='
0'&&ch<='9')
return w*s;
}inline
void add(int
from,int to,int
dis);
head[
from]=cnt;
}void dfs(int x,int f,int
di)}
void dfs2(int x,int
topf)
}inline
int lca(int x,int
y)
return fa[x][0];}
inline
void update(int
k)void build(int k,int l,int
r) build(lson);build(rson);
update(k);
}int ask(int k,int l,int r,int x,int
y)
if(y<=mid)return
ask(lson,x,y);
else
if(x>mid)return
ask(rson,x,y);
else
return max(ask(lson,x,mid),ask(rson,mid+1
,y));
}void query(int x,int
y)
if(dep[x]>dep[y])swap(x,y);
mi=max(ask(1,1
,n,id[x],id[y]),mi);
}int
main()
dfs(s,
0,0);
dfs2(s,s);
build(
1,1,n);
intans;
while(m--)
else
if(z==x)
else
if(z==y)
else
}return0;
}
又雙叒叕換,微軟這次換Edge了
其實兩個月前跟乙個微軟的前同事聊天已經聽說過微軟要基於chromiun來開發pc版瀏覽器的,用來替換原來的edge,當時就比較震驚。今天突然看到網上有關於這類的新聞,突然感覺不得不吐槽兩句。我走之前在內部android edge專案組呆過幾個月,當時android版本的edge就是基於chromiu...
加密數字貨幣又雙叒叕跌了!
加密數字貨幣 周二普遍 其中位元幣 跌近4 在其他主要加密貨幣中,瑞波幣大跌14 以上,以太幣和現為第六大加密貨幣的stella也雙雙跌逾一成。coindesk資料顯示,位元幣 在過去24個小時裡最高觸及6581.51美元,最低觸及6334.39美元。coindesk追蹤來自於bitstamp co...
又雙叒叕搞事情?!聯想欲發布穿牆神器
近日,聯想官方微博連續發布了多條帶有炫酷海報的微博,透露了聯想將於 4 月 16 日召開一場關於智慧型物聯產品的新品發布會,然而除此之外,幾張海報上的資訊都沒有明確展示出是什麼樣的產品,這讓此次新品發布更添了乙份神秘色彩。4 月 12 日,聯想官微又發布了一張帶有wifi圖案的海報,而從這張海報上 ...