魔法使的烟花(NOIP模擬賽Round 7)

2022-05-16 03:48:21 字數 1496 閱讀 1637

【問題描述】

魔法森林裡有很多蘑菇,魔法使常常採摘它們來製作魔法藥水。為了在6月的那個奇妙的晚上用魔法綻放出最絢麗的烟花,魔法使決定對魔法森林進行一番徹底的勘探。

魔法森林分為n個區域,由n-1條長度相等的道路將它們連線為了無向連通圖。每個區域都有乙個等級,這n個區域的等級滿足如下性質:

①1號區域的等級為1;

②由一條道路連線的兩個區域(即相鄰兩個區域)等級相差為1;

③設兩個區域x,y被一條道路連線,若x到1號區域的最短距離小於y到1號區域的最短距離,則有x到1號區域的最短路徑上的所有區域的等級必定小於y的等級。

由於魔法森林各個區域的氣候、地形、水文的不同,每個區域都有乙個精華值,其中第i號區域的精華值為wi。整片魔法森林還有乙個共鳴度m。每個區域吸收的精華值為乙個包含該區域連通子圖的精華值之和,由於共鳴度限制,能被乙個區域吸收精華值的所有區域的等級必須比該區域的等級高x,x為不超過m的自然數。舉個例子:

魔法使希望得到每個區域所吸收的精華值,這將有助於她規劃蘑菇的採摘,於是她把這個任務交給了你,因為她還要去住在這附近的另一位魔法使家中喝杯茶。

【資料範圍】

對於20%的資料,n,m<=1000;

對於70%的資料,n,m<=10^5;

對於另外10%的資料,m=n;

對於100%的資料,0<=n,m<=10^6,0————————————————我是分割線————————————————

我們理解完這道題目後,顯然就可以明白乙個點對於答案的貢獻就是在從該點開始向上爬m步所經過的節點上加上該點的精華值

所以就是在乙個區間上增加自己的精華值

當然就可以用樹上差分啦!

思路清晰,沒什麼可說的

下面貼**

#includeusing

namespace

std;

int val[1000005

];int st[1000005

];int fa[1000005

];int

num,n,m,tp;

int head[1000005

];struct

edgeg[

2000005

];void ins(int u,int v)

void insw(int u,int

v)void dfs(int u,int

fat)

tp--;

}int

main()

dfs(

1,0);

for(int i=1;i<=n;i++)printf("

%d\n

",fa[i]);

fclose(stdin);

fclose(stdout);

}

noip模擬賽(一)魔法樹

魔法樹 mahou.pas c cpp 問題描述 魔法使mored在研究一棵魔法樹。魔法樹顧名思義,這貨是一棵樹 奇葩的是魔法樹上的每一條邊都擁有乙個魔法屬性 如果不那麼奇葩就不是mored的魔法樹了。魔法使mored在研究這棵魔法樹的方法比較奇葩,每一次他會選擇一條路徑 施法。這個魔法是mored...

Noip模擬題 教主的魔法

time limit 10 sec memory limit 512 mb submit 129 solved 57 教主最近學會了一種神奇的魔法,能夠使人長高。於是他準備演示給xmyz資訊組每個英雄看。於是n個英雄們又一 次聚集在了一起,這次他們排成了一列,被編號為1 2 n。每個人的身高一開始都...

2015 10 31的NOIP模擬賽

這是noip前的最後一周了。第一題是個組合數學的問題,規模不算太大。但第一反應就直接dp了,o n 2 的複雜度,始終想不到優化。本來看著1 3 4 6 10 15一串串數覺得多熟悉的,就是想不起來那是組合數。最後只有80分 第二題算是基本想到了吧,但是忽略了乙個問題 我的想法是每行0的個數要麼是當...