洛谷P2016 戰略游戲【樹形dp】

P2016 戰略游戲
時間限制 1.00s
內存限制 125.00MB

題目描述
Bob喜歡玩電腦游戲,特別是戰略游戲。但是他經常無法找到快速玩過游戲的辦法。現在他有個問題。

他要建立一個古城堡,城堡中的路形成一棵樹。他要在這棵樹的結點上放置最少數目的士兵,使得這些士兵能了望到所有的路。

注意,某個士兵在一個結點上時,與該結點相連的所有邊將都可以被了望到。

請你編一程序,給定一樹,幫Bob計算出他需要放置最少的士兵.

輸入格式
第一行 N,表示樹中結點的數目。

第二行至第N+1行,每行描述每個結點信息,依次為:該結點標號i,k(后面有k條邊與結點I相連)。

接下來k個數,分別是每條邊的另一個結點標號r1,r2,…,rk。

對于一個n(0<n<=1500)個結點的樹,結點標號在0到n-1之間,在輸入數據中每條邊只出現一次。

輸出格式
輸出文件僅包含一個數,為所求的最少的士兵數目。

例如,對于如下圖所示的樹:

   0

1
2 3
答案為1(只要一個士兵在結點1上)。

輸入輸出樣例
輸入 #1 復制
4
0 1 1
1 2 2 3
2 0
3 0
輸出 #1 復制
1

解題思路:
dp[u][1]dp[u][1]dp[u][1]來代表在uuu節點上放士兵所需要的最少士兵數
dp[u][0]dp[u][0]dp[u][0]代表不在uuu節點上放士兵所需要的最少士兵數
我們可知,若在uuu節點上放士兵,則
dp[u][1]=dp[u][1]+min(dp[v][1],dp[v][0])dp[u][1]=dp[u][1]+min(dp[v][1],dp[v][0])dp[u][1]=dp[u][1]+min(dp[v][1],dp[v][0])
若不在uuu節點放士兵,則其子節點一定需全部放士兵,因此
dp[u][0]=dp[u][0]+dp[v][1]dp[u][0]=dp[u][0]+dp[v][1]dp[u][0]=dp[u][0]+dp[v][1]

代碼:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
vector<int> m[1600];
int dp[1600][2];
int N;
bool vis[1600];
void dfs(int s,int fa) {dp[s][1]=1;dp[s][0]=0;for(int i=0;i<m[s].size();i++) {if(m[s][i]==fa) continue;dfs(m[s][i],s);dp[s][1]+=min(dp[m[s][i]][0],dp[m[s][i]][1]);dp[s][0]+=dp[m[s][i]][1];}return;
}
int main() 
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0);scanf("%d",&N);rep(i,1,N) {int a,b,c;scanf("%d %d",&a,&b);rep(j,1,b) {scanf("%d",&c);m[a].push_back(c);}}dfs(0,-1);printf("%d\n",min(dp[0][1],dp[0][0]));return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536272.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536272.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536272.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Shell Pyramid【數學+二分】

Shell Pyramid 時間限制: 1 Sec 內存限制: 128 MB 提交: 291 解決: 95 [提交] [狀態] [命題人:admin] 題目描述 In the 17th century, with thunderous noise, dense smoke and blazing fire, battles on the sea were just the same as those in the modern times. But at tha…

Degree Sequence of Graph G【模擬】

Degree Sequence of Graph G 時間限制: 1 Sec 內存限制: 128 MB 提交: 362 解決: 92 [提交] [狀態] [命題人:admin] 題目描述 Wang Haiyang is a strong and optimistic Chinese youngster. Although born and brought up in the northern inland city Harbin, he has deep lov…

Simple Addition expression【打表+二分】

Simple Addition expression 時間限制: 1 Sec 內存限制: 128 MB 提交: 355 解決: 80 [提交] [狀態] [命題人:admin] 題目描述 A luxury yacht with 100 passengers on board is sailing on the sea in the twilight. The yacht is ablaze with lights and there comes out laug…

洛谷P2622 關燈問題II【狀壓dp+bfs】

P2622 關燈問題II 題目描述 現有n盞燈&#xff0c;以及m個按鈕。每個按鈕可以同時控制這n盞燈——按下了第i個按鈕&#xff0c;對于所有的燈都有一個效果。按下i按鈕對于第j盞燈&#xff0c;是下面3中效果之一&#xff1a;如果a[i][j]為1&#xff0c;那么當這盞燈開了的時候&am…

洛谷P1879 [USACO06NOV]玉米田Corn Fields【狀壓dp】

P1879 [USACO06NOV]玉米田Corn Fields 時間限制 1.00s 內存限制 125.00MB 題目描述 Farmer John has purchased a lush new rectangular pasture composed of M by N (1 ≤ M ≤ 12; 1 ≤ N ≤ 12) square parcels. He wants to grow some yummy corn for the cows on a number…

LEAGUE TABLES【模擬】

LEAGUE TABLES 時間限制: 1 Sec 內存限制: 128 MB 提交: 349 解決: 150 [提交] [狀態] [命題人:admin] 題目描述 League football (known in some circles as soccer) has been played in England since 1888 and is the most popular winter game through most of Europe, jus…

MUSICAL CHAIRS【模擬】

MUSICAL CHAIRS 時間限制: 1 Sec 內存限制: 128 MB 提交: 386 解決: 76 [提交] [狀態] [命題人:admin] 題目描述 Musical chairs is a game frequently played at children’s parties. Players are seated in a circle facing outwards. When the music starts, the players h…

Bomb HDU - 3555【數位dp】

Bomb HDU - 3555 The counter-terrorists found a time bomb in the dust. But this time the terrorists improve on the time bomb. The number sequence of the time bomb counts from 1 to N. If the current number sequence includes the sub-sequence “49”, the power…

不要62 HDU - 2089【數位dp】

不要62 HDU - 2089 杭州人稱那些傻乎乎粘嗒嗒的人為62&#xff08;音&#xff1a;laoer&#xff09;。 杭州交通管理局經常會擴充一些的士車牌照&#xff0c;新近出來一個好消息&#xff0c;以后上牌照&#xff0c;不再含有不吉利的數字了&#xff0c;這樣一來&#xff0c;就可…

PACKING【二維01背包】

PACKING 時間限制: 1 Sec 內存限制: 128 MB 提交: 278 解決: 24 [提交] [狀態] [命題人:admin] 題目描述 It was bound to happen. Modernisation has reached the North Pole. Faced with escalating costs for feeding Santa Claus and the reindeer, and serious difficulti…

機器人軍團【動態規劃】

機器人軍團 時間限制: 1 Sec 內存限制: 64 MB 提交: 279 解決: 139 [提交] [狀態] [命題人:admin] 題目描述 邪狼&#xff1a;“怎么感覺這些機器人比我還聰明&#xff1f;不是說人工智能永遠不能超越人類嗎&#xff1f;” 天頂星人&#xff1a;“你們真是目光短淺&#xff0c…

【動態規劃】抄近路

【動態規劃】抄近路 時間限制: 1 Sec 內存限制: 64 MB 提交: 105 解決: 68 [提交] [狀態] [命題人:admin] 題目描述 “最近不知道怎么回事&#xff0c;感覺我們這個城市變成了一個神奇的地方&#xff0c;有時在路上走著走著人就消失了&#xff01;走著走著突然又有人出現了&…

【動態規劃】魔法石礦

【動態規劃】魔法石礦 時間限制: 1 Sec 內存限制: 64 MB 提交: 116 解決: 27 [提交] [狀態] [命題人:admin] 題目描述 為了找到回家的路&#xff0c;張琪曼施展魔法&#xff0c;從高維空間召喚出了一種叫作“讀者”的生物&#xff0c;據說“讀者”這種生物無所不能&#xff0c;…

Knapsack Cryptosystem【折半+查找】

鏈接&#xff1a;https://ac.nowcoder.com/acm/contest/889/D 來源&#xff1a;牛客網 Amy asks Mr. B problem D. Please help Mr. B to solve the following problem. Amy wants to crack Merkle–Hellman knapsack cryptosystem. Please help it. Given an array {ai} wi…

All men are brothers【并查集+數學】

鏈接&#xff1a;https://ac.nowcoder.com/acm/contest/889/E 來源&#xff1a;牛客網 題目描述 Amy asks Mr. B problem E. Please help Mr. B to solve the following problem. There are n people, who don’t know each other at the beginning. There are m turns. In e…

Light bulbs【差分】

19.98% 1000ms 8192K There are NN light bulbs indexed from 00 to N-1N?1. Initially, all of them are off. A FLIP operation switches the state of a contiguous subset of bulbs. FLIP(L, R)FLIP(L,R)means to flip all bulbs xx such that L \leq x \leq RL≤x≤R. S…

Digit sum【暴力+打表】

Digit sum 33.57% 2000ms 131072K A digit sum S_b(n)S b ? (n) is a sum of the base-bb digits of nn. Such as S_{10}(233) 2 3 3 8S 10 ? (233)2338, S_{2}(8)1 0 0 1S 2 ? (8)1001, S_{2}(7)1 1 1 3S 2 ? (7)1113. Given NN and bb, you need to calcu…

P1040 加分二叉樹【dp+深搜】

題目描述 設一個nn個節點的二叉樹tree的中序遍歷為&#xff08;1,2,3,…,n1,2,3,…,n&#xff09;&#xff0c;其中數字1,2,3,…,n1,2,3,…,n為節點編號。每個節點都有一個分數&#xff08;均為正整數&#xff09;&#xff0c;記第ii個節點的分數為di,treedi,tree及它的每個子樹…

Helloworld【C#】

c#Helloworld 題目描述 請輸出樣例所示內容 輸出 樣例輸出 ********** Hello,world! ********** using System;namespace ConsoleApp1 {class Program{static void Main(string[] args){Console.WriteLine("**********");Console.WriteLine("Hello,world!&…

判斷閏年【C#】

判斷閏年 題目描述 使用C#編寫一個控制臺應用。輸入-一個年份&#xff0c;判斷是否潤年(被4整除&#xff0c;且不被100整除&#xff0c;或者被400整除)。 是閏年輸出yes&#xff0c;不是輸出no 輸入 一個年份 輸出 yes或者no 樣例輸入 1996 樣例輸出 yes using Syst…