description
車展結束後,遊樂園決定舉辦一次盛大的山道拉力賽,平平和韻韻自然也要來參加大賽。
賽場上共有n個連通的計時點,n-1條賽道(構成了一棵樹)。每個計時點的高度都不相同(父結點的高度必然大於子結點),相鄰計時點間由賽道相連。由於馬力不夠,所以韻韻的遙控車只能從高處駛向低處。而且韻韻的車跑完每條賽道都需花費一定的時間。
舉辦方共擬舉辦m個賽段的比賽,每次從第u個計時點到第v個計時點,當然其中有不少比賽韻韻的遙控車是不能參加的(因為要上坡)。平平想知道他能參加多少個賽段的比賽,並且想知道他完成這些賽段的總用時。
input
第一行兩個整數n,m。
接下來n-1行每行3個整數a、b、t。
表示韻韻的遙控車可以花t秒從第a個計時點到第b個計時點。
接下來m行每行2個整數u、v,意義如描述所示。
output
第一行輸出乙個正整數,表示能參加的賽段數。
第二行輸出乙個正整數,表示總用時。
sample input
6 2sample output1 2 1
2 4 1
2 5 1
5 6 1
1 3 1
2 64 5
1data constraint2
hint
【資料規模和約定】
第乙個計時點的高度是最高的;
u≠v;
對於50%的資料 n≤1000 m≤1000;
對於100%的資料 n≤10000 m≤100000;
答案小於2^64。
分析顯然求路徑長我們搞個樹上字首和即可
然後求能否到達,可用lca(懶得打)用了時間戳法
#include #includeview codeusing
namespace
std;
typedef
long
long
ll;const
int n=1e4+10
;ll a[n];
intst[n],ed[n];
inttm;
struct
edge e[n];
intcnt,list[n];
intn,m;
void add(int u,int
v,ll w)
void dfs(int
u) tm++;
ed[u]=tm;
}int
main()
dfs(1);
ll count=0,ans=0
;
for (int i=1;i<=m;i++)
printf(
"%lld\n%lld\n
",count,ans);
}
暴力高階,有序二分暴力
include include includeusing namespace std typedef long long ll const int n 1e5 int a n 100 int f int mid,int n printf mid d num d n mid,num return nu...
ACM學習感悟 暴力專場E 暴力dp
problem description 小晴天 我有乙個數列!小晴天 我還要有很多很多的數列!於是小晴天就把這個數列的所有連續子數列寫出來。然後小晴天把每個連續子數列中的最大的數寫出來。那麼,有多少個比k大呢?input 多組資料,首先是乙個正整數t t 100 表示資料的組數 對於每組資料,首先是...
「暴力」注入Explorer
暴力 注入explorer pjf jfpan20000 sina.com 寫點無聊的東西,一段時間blog弄得不成樣子了。向乙個執行中的程序注入自己的 最自然莫過於使用createremotethread,如今遠執行緒注入已經是氾濫成災,同樣的監測遠執行緒注入 防止遠執行緒注入的工具也 舉不勝舉,...