裡口福因有林下風氣,帶領全國各地高校掀起了一股ak風,大家都十分痴迷於ak。裡口福為了打擊大家的自信心,出了一道自以為十分困難的題目。
裡口福有一棵樹,第i個節點上有點權ai,他的問題就是這棵樹中有多少個不同的連通塊滿足連通塊的最大值與最小值之差=k,兩個連通塊不同當且僅當至少存在乙個節點在乙個連通塊中出現而另乙個連通塊中沒有出現。
痴迷於ak的你馬上接下這道題目,在裡口福狂妄的笑聲中,你切掉這道題的決心更加堅定了,現在就差你的**了。
第一行兩個整數n,k,表示樹的大小以及題目中的k。
第二行n個整數,第i個整數表示ai。
接下來n-1行,每行兩個整數x,y表示樹邊(x,y)。
一行乙個整數,表示答案,答案對19260817取模。
5 31 2 3 4 5
1 21 3
2 42 5
對於30%的資料,n<=22
對於另外20%的資料,樹是一條鏈
對於另外20%的資料,ai只有0和1兩種
對於100%的資料,n<=3333,0<=ai<=n,k>=0
設sum[i]為聯通塊差<=i的個數
答案就是sum[n]-sum[n-1]
列舉n個數,為當前dp的最大值,那麼走的每乙個點與最大值的差都要小於k且大於0
至於統計答案,就是每次搜尋數量的乘積,不過每次要加1,因為可以當前不走了也是算一種方案
#include #include #define n 4077
using namespace std;
const int mod=19260817;//出題人真不怕死
struct edge e[n*2];
long long ans1,ans2;
int n,k,cnt,v[n],list[n];
void add(int x,int y)
long long dp(int x,int fa,int mx)
int main()
printf("%lld",(ans1-ans2+mod)%mod);
}
Jzoj P5913 林下風氣
有一棵樹,樹上有n nn個節點,第i個節點上有點權a ia i ai 問中有多少個不同的連通塊滿足連通塊的最大值與最小值之差 k k k,兩個連通塊不同當且僅當至少存在乙個節點在乙個連通塊中出現而另乙個連通塊中沒有出現。n 3333,0 a i n k 0 n 3333,0 a i n,k 0 n ...
jzoj5913 林下風氣 樹形dp
裡口福因有林下風氣,帶領全國各地高校掀起了一股ak風,大家都十分痴迷於ak。裡口福為了打擊大家的自信心,出了一道自以為十分困難的題目。裡口福有一棵樹,第i個節點上有點權ai,他的問題就是這棵樹中有多少個不同的連通塊滿足連通塊的最大值與最小值之差 k,兩個連通塊不同當且僅當至少存在乙個節點在乙個連通塊...
JZOJ A組 量子糾纏
第一行包含乙個正整數 m,代表運算元。接下來 m 行,每行可能有以下形式 1 s 代表將數字串 s 加入資訊集中 2 s 代表詢問數字串 s 是否在資訊集中 3 a b 代表使數字串 a 和 b 互相糾纏 對於每乙個 2 操作,如果詢問串不在集合中,請輸出一行乙個整數 0,否則輸出一行乙個整 數 1...