【SSL】1071 挖地雷(1996年分区联赛提高组之三)(DP)
Time Limit:1000MS
Memory Limit:65536K
Description
在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。例如:
Input
Output
K1 K2,……,KV (挖地雷的顺序)
MAX (挖地雷的数量)
Sample Input
5
10 8 4 7 6
1 1 1 0
0 0 0
1 1
1
Sample Output
1 3 4 5
27
思路
这道题满足无后效性和最优子结构的条件,所以可以用动态规划做。我们从前往后推,每次求出到达当前地窖可挖到最多的地雷。可得出状态转移方程为:f[i]=f[1]~f[i-1]的最大值(f[i]要与f[1]至f[i-1]中部分通路)+当前地窖地雷数;f[1]=a[1],2<=i<=n
代码
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdlib>
using namespace std;
int n,w[1000],a[1000][1000