題目描述
太平王世子事件後,陸小鳳成了皇上特聘的御前一品侍衛。
皇宮以午門為起點,直到後宮嬪妃們的寢宮,呈一棵樹的形狀,某些宮殿間可以互相望見。大內保衛森嚴,三步一崗,五步一哨,每個宮殿都要有人全天候看守,在不同的宮殿安排看守所需的費用不同。
可是陸小鳳手上的經費不足,無論如何也沒法在每個宮殿都安置留守侍衛。
幫助陸小鳳布置侍衛,在看守全部宮殿的前提下,使得花費的經費最少。
輸入格式
輸入中資料描述一棵樹,描述如下:
第一行 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 usingnamespace
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...