戰略游戲

題目描述

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
分析:
樹的最大獨立集模板題。。。F[i][0]表示當前位置不放的最小值,F[i][1]表示當前位置放的最小值。
CODE:
 1 #include<cmath>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<iostream>
 5 #include<algorithm>
 6 using namespace std;
 7 const int M=1505;
 8 struct node{
 9     int num;
10     int child[M];
11 }k[M];
12 int f[M][2],a[M],n,root;
13 void dp(int x){
14     f[x][1]=1;
15     f[x][0]=0;
16     if (k[x].num==0) return ;
17     for (int i=1;i<=k[x].num;i++){
18         dp(k[x].child[i]);
19         f[x][0]+=f[k[x].child[i]][1];
20         f[x][1]+=min(f[k[x].child[i]][0],f[k[x].child[i]][1]);
21     }
22 }
23 int main() {
24     cin>>n;
25     for (int i=1;i<=n;i++){
26         int x,y;
27         cin>>x;
28         cin>>k[x].num;
29         for (int j=1;j<=k[x].num;j++){
30             cin>>y;
31             k[x].child[j]=y;
32             a[y]=1;
33         }
34     }
35     while (a[root]) root++;
36     dp(root);
37     cout<<min(f[root][0],f[root][1])<<endl;
38     //system("pause");
39     return 0;
40 }

?

轉載于:https://www.cnblogs.com/kanchuang/p/11243503.html

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

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

相關文章

Vue語法學習第三課——計算屬性

模板內的表達式非常便利&#xff0c;但是設計它們的初衷是用于簡單運算的。在模板中放入太多的邏輯會讓模板過重且難以維護。對于任何復雜邏輯&#xff0c;都應當使用計算屬性。 <div id"example"><p>original message : "{{message}}"</p&…

云計算學習資料分享:type查看命令

type 查看命令類型&#xff0c;例如該命令是alias&#xff0c;還是內置命令&#xff0c;還是某個文件&#xff0c;還是關鍵字 哪種神仙&#xff1a;天上還是地上&#xff0c;還是水里游的 [roottianyun ~]# type ll ll is aliased to ls -l --colorauto [roottianyun ~]# type …

neo4j刪除所有節點

MATCH (n)OPTIONAL MATCH (n)-[r]-()DELETE n,r轉載于:https://www.cnblogs.com/luoganttcc/p/10525189.html

Hadoop RPC實例

本文發表于本人博客。 上次寫了個hadoop偽分布環境搭建的筆記了&#xff0c;今天來說下hadoop分布式構建的基礎RPC&#xff0c;這個RPC在提交Job任務的時候底層就是創建了RPC來實現遠程過程調用服務端。 我們首先可以通過Job的waitForCompletion(boolean verbose)方法來跟蹤代碼…

Django 模板語言 標簽

前言&#xff1a;django的模板語法基本和flask的jinja2基本一樣。下面比較一下兩個模板語法的區別。 &#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;深度變量的查找&#xff08;萬能的句點號&#xff09; 在 Django 模板中遍歷復雜數據結構的關鍵是…

電子書下載:Illustrated C# 2012 4th

下載&#xff1a;http://www.ctdisk.com/file/9015906轉載于:https://www.cnblogs.com/MaxWoods/archive/2012/08/26/2657752.html

關于83版射雕英雄傳

今天無意中看到網上一群人關于83版射雕的一些爭論.或許一些現在的年輕人不喜歡83版射雕,說那太老土了,但想想那個時代的條件,能拍出這樣的片子,是非常不錯的,而且我覺得83版射雕也是最忠于原著的,跟后來的翻版比較,雖然從畫面效果,人物服裝方面存在差距,但這都是由于歷史原因和…

ZOJ 3735 Josephina and RPG

思路&#xff1a;dp[i][j]:第i輪打完后&#xff0c;決定以j陣容打下一輪 保持原有陣容&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ] * p [ j ][ s [ i ] ] 換成第i輪怪的陣容: for(int k0;k<r;k)dp[i][j]max(dp[i][j],dp[i-1][k]*p[k][s[i]]) 優化&#xff1a;用滾動數組&am…

4~20mA電流輸出芯片XTR111完整電路(轉)

源&#xff1a; 4~20mA電流輸出芯片XTR111完整電路轉載于:https://www.cnblogs.com/LittleTiger/p/10511115.html

電子書下載:Programming Microsoft LINQ in Microsoft .NET Framework 4

Book DescriptionDig into LINQ — and transform the way you work with data. With LINQ, you can query data from a variety of sources — including databases, objects, and XML files — directly from Microsoft Visual Basic or C#. Guided by data-access experts w…

原型模式 —— Java的賦值、淺克隆和深度克隆的區別

賦值 直接 &#xff0c;克隆 clone 假如說你想復制一個簡單變量。很簡單&#xff1a; int a 5; int b a; b 6;這樣 a 5, b 6 不僅僅是int類型&#xff0c;其它七種原始數據類型(boolean,char,byte,short,float,double.long)同樣適用于該類情況。 但是如果你復制的是一個…

一個醫院院長電視機壞了,拿到一個大修理店去修

一個醫院院長電視機壞了&#xff0c;拿到一個大修理店去修。修理店接待人員:“OK&#xff0c;開機費50元”醫院院長: “為什么還沒修理就要先交費”&#xff1f;修理店接待人員: “我們修理店的制度就是這樣&#xff0c;你們醫院的掛號費&#xff0c;不是沒看病之前就要交嗎”&…

[scrum]2011/9/24-----第四天

scrum 總結&#xff1a; Team member Yesterday’s Work Today’s Work Issue R X Task201&#xff1a;Active Agenda Page的重寫&#xff0c;界面設置 Task201&#xff1a;Active Agenda Page 界面的美化&#xff0c;收縮折疊&#xff0c;并添加一些動畫效果 Task 243:…

c# 前后日期設置

List<string> list new List<string>(); //根據當月 顯示前6個月 for(int i0;i<6;i) { list.add(DateTime.Now.AddMonths(i*-1).Tostring()); }轉載于:https://www.cnblogs.com/Dcz1996/p/10515429.html

jq-AJAX 初步了解

js的異步操作(1) 定時器 (2) 事件 (3) 回調 (4) ajax Ajax優點 可以局部更新網頁內容。 ajax的本質就是xmlHttpRequest對象控制臺出現三個屬性 readyState 請求的五個階段 0 1 2 3 4 responseText 返回的文件內容 Status 狀態嗎 返回的狀態信息 在__proto__有三個方法 …

ARM學習筆記7——乘法指令

ARM乘法指令完成兩個數據的乘法&#xff0c;兩個32位二進制數相乘的結果是64位的4積。 其中&#xff1a; 1、“RadHi:RdLo”是由RdHi(最高有效32位)和RdLo(最低有效32位)鏈接形成的64位數&#xff0c;“[31:0]”只選取結果的最低有效32位 2、簡單的賦值由“&#xff1a;”表示…

《劍指offer》第四十三題(從1到n整數中1出現的次數)

// 面試題43&#xff1a;從1到n整數中1出現的次數 // 題目&#xff1a;輸入一個整數n&#xff0c;求從1到n這n個整數的十進制表示中1出現的次數。例如 // 輸入12&#xff0c;從1到12這些整數中包含1 的數字有1&#xff0c;10&#xff0c;11和12&#xff0c;1一共出現了5次。#in…

回調函數

又稱callback函數。意思是指&#xff1a;在你的程序中&#xff0c;被windows系統調用的函數。 這些函數雖然由你設計&#xff0c;但是永遠不會也不該被你調用&#xff0c;它們是為windows系統準備的。 窗口函數設計為callback形式&#xff0c;才能開放出一個接口給操作系統調用…

固態硬盤Ghost安裝Windows 10無法引導的問題

機器配置如下&#xff1a; 電腦型號 技嘉 B360M POWER 臺式電腦操作系統 Windows 10 64位 ( DirectX 12 )處理器 英特爾 Core i7-8700 3.20GHz 六核主板 技嘉 B360M POWER ( 英特爾 PCI 標準主機 CPU 橋 - CannonLake - A3…

Linux shell 內部命令與外部命令有什么區別以及怎么辨別

內部命令實際上是shell程序的一部分&#xff0c;其中包含的是一些比較簡單的linux系統命令&#xff0c;這些命令由shell程序識別并在shell程序內部完成運行&#xff0c;通常在linux系統加載運行時shell就被加載并駐留在系統內存中。內部命令是寫在bashy源碼里面的&#xff0c;其…