一本通1579 例 5 皇宮看守

2022-05-08 02:03:09 字數 2424 閱讀 6642

題目描述

太平王世子事件後,陸小鳳成了皇上特聘的御前一品侍衛。

皇宮以午門為起點,直到後宮嬪妃們的寢宮,呈一棵樹的形狀,某些宮殿間可以互相望見。大內保衛森嚴,三步一崗,五步一哨,每個宮殿都要有人全天候看守,在不同的宮殿安排看守所需的費用不同。

可是陸小鳳手上的經費不足,無論如何也沒法在每個宮殿都安置留守侍衛。

幫助陸小鳳布置侍衛,在看守全部宮殿的前提下,使得花費的經費最少。

輸入格式

輸入中資料描述一棵樹,描述如下:

第一行 n,表示樹中結點的數目。

第二行至第 n+1 行,每行描述每個宮殿結點資訊,依次為:該宮殿結點標號 i (0

對於乙個 n 個結點的樹,結點標號在 1 到 n 之間,且標號不重複。

輸出格式

輸出最少的經費

樣例樣例輸入

6

1 30 3 2 3 4

2 16 2 5 6

3 5 0

4 4 0

5 11 0

6 5 0

樣例輸出

25
樣例解釋

有六個區域被安排的情況如左圖所示。

如右圖,灰色點安排了警衛,2 號警衛可以觀察 1,2,5,6,33 號警衛可以觀察 1,3,4 號警衛可以觀察 1,4。

總費用:16+5+4=25

資料範圍與提示

對於 100% 的資料,0

sol:這道題我開始看成了沒有上司的舞會,gg了無數發後發現它觀察的是點(那道題是邊)

dp[x][0,1][0,1]表示那個點是否有哨兵,是否安全,然後暴力轉移就ojbk了(其實dp[1][0]是不存在的,其實就三個)

#include using
namespace

std;

inline

intread()

while

(isdigit(ch))

return (f)?(-s):(s);

}#define r(x) x=read()inline

void write(long

long

x)

if(x<10

)

write(x/10

); putchar((x%10)+'0'

);

return;}

inline

void writeln(int

x)#define w(x) write(x),putchar(' ')

#define wl(x) writeln(x)

const

int n=1505,m=3005,inf=0x3f3f3f3f

;int

n,cost[n];

struct

tree

long

long dp[n][2][2

];

//第一維[0,1]表示這個點是否有士兵

//第二維[0,1]表示這個點是否安全

inline void dfs(int x,int

fa)

if(!bo)dp[x][0][1]+=min;

dp[x][

1][1]+=cost[x];

return

; }

inline

void

solve()

inline

void

init()

}t;int

main()

}t.solve();

return0;

}/*input

61 30 3 2 3 4

2 16 2 5 6

3 5 0

4 4 0

5 11 0

6 5 0

output

25input

11 2 0

output

2input

92 16 3 1 3 4

1 8000 3 5 6 7

3 6000 1 8

4 8000 0

5 1 1 9

6 900 0

7 100 0

8 2 0

9 20 0

output

1019

*/view code

一本通 1 1 例 5 智力大衝浪

題目link 首先根據貪心,容易得出應該盡可能的不失去扣錢數多的遊戲,因此先按照扣錢數進行排序。隨後從後往前列舉時間,能完成就完成,因為有可能出現扣錢數多的遊戲但時間寬裕 扣錢數相對少但時間緊的情況,因為答案要求最大,所以盡量每個遊戲的時間都向後安排,因為前面的時間是所有遊戲都最可能用的,而後面的時...

C 一本通 1 1 例 5 智力大衝浪

一本通題庫 1426 libreoj 10004 vjudge 小偉報名參加 電視台的智力大衝浪節目。本次挑戰賽吸引了眾多參賽者,主持人為了表彰大家的勇氣,先獎勵每個參賽者m mm元。先不要太高興!因為這些錢還不一定都是你的。接下來主持人宣布了比賽規則 首先,比賽時間分為n個時段 n 500 n 5...

佇列(一本通)

這道題重點是關係的轉換和初始化 include include include includeusing namespace std int a 101 記錄接著的的那個節點 int n,m int main int ans void bfs int x,int y int main cout in...