洛谷 U138346 統治王國

2022-03-20 02:08:13 字數 2087 閱讀 6671

洛谷傳送門

某日午後,seawayseawa**y一覺醒來,發現自己穿越到了蒟蒻王國,並當上了蒟蒻王國的國王......在反穿越失敗後,seawayseawa**y接受了這個事實,並嘗試著統治這個王國......

蒟蒻王國一共有nn個城市,n-1n−1條可以雙向通行的鏈結兩個城市的道路,每條道路的長度相等。並且,蒟蒻王國的所有城市間兩兩可達。seawayseawa**y的王宮位於11號城市。為了統治蒟蒻王國,seawayseawa**y需要出宮巡視;並且,為了展現自己對底層人民的關懷,seawayseawa**y只關心自己到達了多少「偏遠城市」,偏遠城市的定義是:只有一條路與外界相連的城市。但是,貴為一國之王,seawayseawa**y的巡視路線要遵循王室的標準,在每座他停留的城市,他只能選擇兩種方式繼續巡視:

第一種:如果當前城市不是偏遠城市,那麼去往當前城市下轄的任意乙個偏遠城市。這裡的下轄指:除了王宮方向之外的所有方向。

第二種:如果當前城市是偏遠城市,那麼他可以向著王宮的方向巡視不超過kk個城市。

特別地,因為11號城市是王宮所在,所以即便1號城市只有一條路與外界相連,它也不屬於偏遠城市。

作為蒟蒻王國的總會計師,seawayseawa**y要你幫他規劃出:他此次巡視最多能巡視多少偏遠城市。

由於答案可能較大,請輸出答案對998244353998244353取模的結果。

從檔案kingdom.inkingdom.i**n中讀入資料。

第一行包括兩個整數n,kn,k,

第二行包含n-1n−1個整數,第ii個整數f_if**i表示第i+1i+1號城市的上級城市。輸入保證11號城市是所有城市的上級。

輸出到檔案kingdom.outkingdom.out中。

僅一行乙個整數,表示可以巡視的最多偏遠城市數對998244353998244353取模的結果。

沒啥背景。

之前對這道題理解還是不深,再來重新說一遍。

題意應該是很好概括的吧,不多說了。

看到樹上最優化看看樹形dp行不行。

行!統計啥呢?直接統計這個點能到達多少葉子節點,也就是直接設答案?不太行。為啥呢?因為沒法轉移,你不知道兒子能走到的葉子節點能不能走到你,因為有k步作為限制。

那麼我們設定dp[i]表示由多少葉子節點出發能夠到達i。注意這跟上面的狀態不一樣!這是從上往下走的。

這個的轉移方程很好想。只需要統計乙個陣列low[i]表示離i最近的葉子節點深度即可。也很容易求出來。求出來這個又有什麼用呢?

就可以從根出發,找一條size和最大的路徑。

為了避免重複統計,我們把size更新完就清空。

**:

#include#includeusing namespace std;

const int maxn=1e6+10;

const int inf=1e9;

int n,k;

int tot,head[maxn],nxt[maxn<<1],to[maxn<<1];

int deep[maxn],size[maxn],low[maxn];

bool v[maxn];

void add(int x,int y)

void dfs1(int x,int d)

}void dfs2(int x)

}}int getsum(int x)

int main()

dfs1(1,0);

dfs2(1);

printf("%d",getsum(1));

return 0;

}

洛谷 P5024 保衛王國 (倍增)

很多人寫了題解了,我就懶得寫了,推薦一篇部落格 那就分享一下我的理解吧 說得好像有人看一樣 對於每個點都只有選與不選兩種情況,所以直接用倍增預處理出來兩種情況的子樹之內,子樹之外的最值,最終答案以拼湊的方式得出 如果這個題要修改權值的話就真的只能用動態dp了 好像還有那個什麼全域性平衡樹 我真的覺得...

洛谷 U6931 燈光

明天就是校園活動了,小明作為場地的負責人,將一切都布置好了。但是在活動的前幾天,校園裡的燈卻都壞掉了,無奈之下,只好再去買一批燈。但是很遺憾的是,廠家看馬上要過年了,就沒有在進貨了,現在只剩下n個發光值不同的燈,作為負責人,你需要,想辦法配出合適的燈。廠家有n盞剩下的燈,小明需要m盞燈,因為活動舉辦...

洛谷 U141384 電路

洛谷傳送門 seawayseawa y是熱愛學習的好孩子。有一天,seawayseawa y正在向他的物理老師lsplsp討教物理。ll老師向他介紹了一種神奇的電路,邏輯電路 ll老師說 邏輯電路是一種離散訊號的傳遞和處理 以二進位制為原理 實現數碼訊號邏輯運算和操作的電路。分組合邏輯電路和時序邏輯...