noip1998 提高組t3 挖地雷

2022-05-12 13:10:42 字數 1500 閱讀 7480

題目背景

noip1996提高組第三題

題目描述

在乙個地圖上有n個地窖(n<=20),每個地窖中埋有一定數量的地雷。同時,給出地窖之間的連線路徑。當地窖及其連線的資料給出之後,某人可以從任一處開始挖地雷,然後可以沿著指出的連線往下挖(僅能選擇一條路徑),當無連線時挖地雷工作結束。設計乙個挖地雷的方案,使某人能挖到最多的地雷。

輸入輸出格式

輸入格式:

輸入檔案mine.in有若干行。

第1行只有乙個數字,表示地窖的個數n。

第2行有n個數,分別表示每個地窖中的地雷個數。

第3行至第n+1行表示地窖之間的連線情況:

第3行有n-1個數(0或1),表示第乙個地窖至第2個、第3個、…、第n個地窖有否路徑連線。如第3行為1 1 0 0 0 … 0,則表示第1個地窖至第2個地窖有路徑,至第3個地窖有路徑,至第4個地窖、第5個、…、第n個地窖沒有路徑。

第4行有n-2個數,表示第二個地窖至第3個、第4個、…、第n個地窖有否路徑連線。

第n+1行有1個數,表示第n-1個地窖至第n個地窖有否路徑連線。(為0表示沒有路徑,為1表示有路徑)。

輸出格式:

輸出檔案wdl.out有兩行資料。

第一行表示挖得最多地雷時的挖地雷的順序,各地窖序號間以乙個空格分隔,不得有多餘的空格。

第二行只有乙個數,表示能挖到的最多地雷數。

輸入輸出樣例

輸入樣例#1: 複製

5 10 8 4 7 6

1 1 1 0

0 0 0

1 1

1 輸出樣例#1: 複製

1 3 4 5

27動規,dp[i]表示到i點最大地雷數。

轉移方程:if(vis[i][j]]) dp[i]=dp[j]+a[i]。a代表權值。

#include

using

namespace

std;

const

int maxn=25; //fa陣列表示雷最大時時的路徑,不斷更新。

int n,dp[maxn],a[maxn],fa[maxn],mx=-1; //a陣列表示每個地點埋的地雷。

bool vis[maxn][maxn]; //表示某兩點是否連通。

int main()

dp[n]=a[n];

for(register

int i=n-1;i>=1;i--)

}dp[i]=l+a[i];

fa[i]=k;

}int k=1;

for(register

int j=2;j<=n;j++)

if(dp[j]>dp[k]) k=j;

int ans=dp[k];

while(k!=0)

printf("\n");

printf("%d",ans);

return

0;}

NOIP 1998 提高組 複賽 車站

noip 1998 提高組 複賽 車站 1.題意很快看懂,但第二站上車人數怎麼求?2.突然想到,第二站上車人數可以採用列舉的方法求出,這一點跟筆算有很大不同。3.輸出時,考慮了幾個問題,x 1,x 2,x n都需單獨列出。4.3 x n 1根據列舉進行計算。5.編好 樣例通過,提交ac。6.本題收穫...

Noip1998 提高組3 盧斯加法表

著名科學家盧斯為了檢查學生對進製的理解,他給出了如下的一張加法表,表中的字母代表數字。例如 其含義為 l l l,l k k,l v v,l e e k l k,k k v,k v e,k e kl e e kv 根據這些規則可推導出 l 0,k 1,v 2,e 3 無關,就這個意思 同時可以確定該...

20200721NOIP提高組模擬T3 最小代價

給你n個點 n leq100000 所構成的邊帶權的無向圖,每個點都有黑或白兩種顏色之一,其中黑記為1,白記為0.現在要你選擇一些邊 選擇一條邊的代價即為此邊權值 用這些邊構成新的圖,使得新圖中每個白點都與黑點聯通,且每個白點到距離其最近的黑點的距離等於原圖中的最短距離.若不存在這樣的圖,輸出imp...