給定一棵有n個節點的無根樹,樹上的每個點有乙個非負整數點權。定義一條路徑的價值為路徑上的點權和-路徑上的點權最大值。 給定引數p
pp,我們想知道,有多少不同的樹上簡單路徑,滿足它的價值恰好是p
pp的倍數。 注意:單點算作一條路徑;u!=
vu!=v
u!=v
時,( u,
v)
(u,v)
(u,v)和(v,
u)
(v,u)
(v,u
)只算一次。
n
<=1
e5,p
<=1
e7
n<=1e5 , p<=1e7
n<=1
e5,p
<=1
e7這個,智商壓制題。
其實只需要點分治之後按路徑最大值排序,再來個簡單的子樹內去重即可。
a cc
od
e\rm ac\ code
accode
#include
#define maxn 100005
#define ll long long
using
namespace std;
int n,p,a[maxn]
;int info[maxn]
,prev[maxn<<1]
,to[maxn<<1]
,cnt_e=0;
void
node
(int u,
int v)
int mn,rt,vis[maxn]
,sz[maxn]
;void
dfs(
int u,
int ff,
int tsz)
intgert
(int u,
int tsz)
ll ans =0;
int c[maxn]
,mx[maxn]
,sm[maxn]
,cnt[
10000007];
bool
cmp(
const
int&u,
const
int&v)
void
ser(
int u,
int ff,
int mx,
int sm)
void
solve
(int u)
for(
int i=info[u]
,v;i;i=prev[i])if
(!vis[v=to[i]])
solve
(gert
(v,sz[v]))
;}intmain()
2019 12 12 C 點分治 去重
記憶體限制 256 mib時間限制 1000 ms 題目描述 給定一棵有n個節點的無根樹,樹上的每個點有乙個非負整數點權。定義一條路徑的價值為路徑上的點權和 路徑上的點權最大值。給定引數p,我!們想知道,有多少不同的樹上簡單路徑,滿足它的價值恰好是p的倍數。注意 單點算作一條路徑 u v時,u,v ...
C 框架winform實現簡單點餐系統
1 構思介面並進行設計 2 思考需要用到的控制項以及控制項需要更改的屬性 3 構思將要觸發的事件以及部分業務流xrkdj程 4 通過點選菜品,進行新增,並計算 5 介面的美化以及功能的完善 1 如何獲取控制項中的內容 2 點選按鈕,查詢並新增查詢的內容 3 新增按鈕對應的點選事件 4 如何一次性取出...
1011 A B 和 C (15 分) 簡單數學
1011 a b 和 c 15 分 簡單數學 給定區間 2 31 2 31 內的 3 個整數 a b 和 c,請判斷 a b 是否大於 c。輸入格式 輸入第 1 行給出正整數 t 10 是測試用例的個數。隨後給出 t 組測試用例,每組佔一行,順序給出 a b 和 c。整數間以空格分隔。輸出格式 對每...