luogu2196 挖地雷(NOIP1996提高组第3题)

【动态规划】挖地雷 在一个地图上有 N 个地窖(N<=200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。WN //每个地窖中的地雷数。X1,Y1 //表示从 X1 可到 Y1…-Kv //挖地雷的顺序。MAX //最多挖出的地雷数。0,0 //表示输入结束。 阅读详情

luogu2196 挖地雷(NOIP1996提高组第3题)

时空限制    1000ms/128MB

题目描述

在一个地图上有N个地窖(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。

输入输出格式

输入格式:

有若干行。

第1行只有一个数字,表示地窖的个数N。

第2行有N个数,分别表示每个地窖中的地雷个数。

第3行至第N+1行表示地窖之间的连接情况:

第3行有n−1个数(0或1),表示第一个地窖至第2个、第3个、…、第n个地窖有否路径连接。如第3行为11000…0,则表示第111个地窖至第2个地窖有路径,至第3个地窖有路径,至第4个地窖、第5个、…、第n个地窖没有路径。

第4行有n−2数,表示第二个地窖至第3个、第4个、…、第n个地窖有否路径连接。

… …

第n+1行有1个数,表示第n−1个地窖至第n个地窖有否路径连接。(为0表示没有路径,为1表示有路径)。

输出格式:

有两行

第一行表示挖得最多地雷时的挖地雷的顺序,各地窖序号间以一个空格分隔,不得有多余的空格。

第二行只有一个数,表示能挖到的最多地雷数。

输入输出样例

输入样例#1:

5
10 8 4 7 6
1 1 1 0
0 0 0
1 1
1

输出样例#1:

1 3 4 5
27

 

代码

#include<iostream>
using namespace std;
const int N = 25;
int n,a[N],way[N],f[N];
bool g[N][N];

int main(){
	cin>>n;
	for (int i=1; i<=n; i++) cin>>a[i];
	for (int i=1; i<n; i++)
		for (int j=i+1; j<=n; j++) cin>>g[i][j];
	f[n] = a[n];	//f[i]表示从第i个到第n个地窖最多挖地雷数
	for (int i=n-1; i>=1; i--){	//逆推,LIS变形
		int max=0,k=0;
		for (int j=i+1; j<=n; j++)	// i+1到n的最大值
			if (g[i][j] && f[j]>max) max=f[j],k=j;
		f[i] = a[i]+max;
		way[i] = k;	//i下一个地窖位置
	}
	int k=1;
	for (int i=2; i<=n; i++)	//最大值下标 用于输出路径
		if (f[i]>f[k]) k=i;
	int ans=f[k];//最多挖雷数
	cout<<k;
	k = way[k];
	while (k){
		cout<<" "<<k;
		k = way[k];
	}
	cout<<endl<<ans<<endl;
	return 0;
}
【动态规划】练习-挖地雷 链接 目描述 在一个地图上有NN个地窖(N \le 20)(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。 输入格式 有若干行。 第11行只有一个数字,表示地窖的个数NN。 第22行有NN... 阅读详情

相关推荐

LSTM 怎么进行二维数据的输入呢

尽管LSTM并不天然地适用于处理图像、视频等二维数据,但通过时间序列化、卷积特征提取和双向LSTM等方法,我们可以将二维数据转化为适合LSTM输入的形式,从而利用LSTM的强大记忆能力和长期依赖学习能力对二维数据进行建模。未来的研究方向可以考虑将LSTM与其他模型结合,例如将LSTM与卷积神经网络(Convolutional Neural Network, CNN)结合,利用CNN提取图像的空间特征,然后利用LSTM学习时间序列的长期依赖;

xiamu_CDA的博客 1011

部分和问的两种解决方法(动态规划和深度优先搜索)

给定整数a1、a2、a3、、、、an,判断是否可以从中选出若干数,使他们的和恰好为k (1&lt;n&lt;=20     -100000000&lt;ai&lt;100000000      -100000000&lt;k&lt;100000000) 动态规划解法 代码如下: #include &lt;iostream&gt; #include &lt;algorithm&gt; us...

来自师范的学渣 1377

GStreamer中h264parse元素

h264parse是 GStreamer 中处理 H.264 视频流的关键元素,主要负责解析和准备 H.264 流以便后续处理。

深之JohnChen的专栏 978

洛谷刷小记——P2196 [NOIP1996 提高] 挖地雷

一、目描述 在一个地图上有NN个地窖(N \le 20)(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。 输入格式 有若干行。 第11行只有一个数字,表示地窖的个数NN。 第22行有NN个数,分别表示每个地窖中的地雷个数。 第33行至第N+1N+1行表示地窖之间的连接情况: 第.

weixin_53364209的博客 1190

动态规划——挖地雷

动态规划——挖地雷

qq_43102225的博客 1576

P2196 [NOIP 1996 提高] 挖地雷(DFS->动态规划)

3 行有 n−1 个数(0 或 1),表示第一个地窖至第 2 个、第 3 个 …如第 3 行为 11000⋯0,则表示第 1 个地窖至第 2 个地窖有路径,至第 3 个地窖有路径,至第 4 个地窖、第 5 个 …我们定义dp[i]为从i节点出发可以得到的最大地雷数,那么我们可以知道,dp[i] = max(nums[i],nums[i]+dp[j]),其中j大于i。第 n+1 行有 1 个数,表示第 n−1 个地窖至第 n 个地窖有否路径连接。第 1 行只有一个数字,表示地窖的个数 N。

m0_74083096的博客 955

洛谷P2196分析

算法:深度优先搜索,动态规划

「止于纸扇」的博客 224

DP练习day3 luogu P2196 [NOIP1996 提高] 挖地雷

P2196 [NOIP1996 提高] 挖地雷 目链接 难度:普及/提高- 本依旧做的很蠢。昨晚说好了早起的,又没起来。然后这道做了2小时,一上午就没了。我真是个废物! 下午一定要开始读论文了,其他啥也不干! 一. 思路简述: 本也不难,就是细节问又坑了我好久。 1. “状态”的初步确定: 本“状态”下的值是最大地雷数,而影响该值的“状态变量”显然就是每个地窖的地雷数和连通情况。另外一个“状态”属性是每个地窖的序号。 2. 子问的分解: 本问看上去可能挺复杂,首先起始点不确定,可以从任

homeofzhixiang的博客 285

[DP 路径记录]P2196 [NOIP1996 提高] 挖地雷

[DP 路径记录]P2196 [NOIP1996 提高] 挖地雷 目 思路 挺水的目,主要是利用前驱记录转移路径 代码 // Problem: P2196 [NOIP1996 提高] 挖地雷 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P2196 // Memory Limit: 125 MB // Time Limit: 1000 ms // FishingRod #include<bits/stdc++.h&gt

鱼竿钓鱼干 206

[LUOGU] P2196 挖地雷

目背景 NOIp1996提高第三 目描述 在一个地图上有N个地窖(N20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。 输入输出格式 输入格式: 输入文件mine.in有若干行。 第

Memories Do Not Open 433

洛谷 P2196 [NOIP1996 提高] 挖地雷 (Java版)

1、要考虑此地窖能到达哪一个地窖(地窖不唯一),到达哪一个地窖能挖到最多的地雷(有点绕,多读几遍),每一个地窖的问都是这个,所以说可以一并考虑。想要做好这道,要想清楚两个问,如何存储路径,且他是挖的最大路径数,那就得存储包含当前地窖的最长路径。2、存储路径,用每一个LinkedList 就好了,存储能挖到最多地雷的地窖。初始化,一定是dp[i] = lights[i]dp[i] 表示 含i的地窖最多能挖的雷数。考虑好这个就可以考虑状态转移方程了。直接上代码咯(本人是弱鸡,勿喷)

conge11的博客 209

luogu2196 挖地雷 dp

http://www.elijahqi.win/archives/466 目背景 NOIp1996提高第三 目描述 在一个地图上有N个地窖(N&lt;=20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能...

Elijahqi 217

luogu21961996提高挖地雷(记忆化搜索/dp)

这道以前写的时候想不明白为什么能dp,所以固执的写了记忆化搜索。。。现在一想其实很简单,这道给的图其实是很特殊的,每个点只可能与在它后面的点有有向边。所以可以倒着dp,满足了无后效性和最优子结构。dfs+记忆化

Icefox的博客 400

洛谷——P2196 挖地雷

目背景 NOIp1996提高第三 目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。 输入输出格式 输入格式: 输入文件mine.i...

weixin_33798152的博客 128

目录------动态规划

01 luogu1216_数字三角形1 02 codeup4813_数字三角形2 03 codeup4812_数字三角形3 04 ybt1287_最低通行费 05 luogu1006_传纸条(NOIP2008提高3) 06 luogu1004_方格取数(NOIP2000提高第4) 07 ybt1281_最长上升子序列 08...

HCSDN 482

洛谷P2196 挖地雷 —— 更新易位的回溯,或dfs函数结构安排

洛谷P2196 挖地雷 通常的回溯问,代码结构如下: 重点有三四个结构: - 更新结构 - check结构 - vis-rec结构 这里将给出一个相对不同的结构,并思考回溯法解决问时回溯函数的架构问

hnZone 827

【洛谷 P2347】[NOIP1996 提高] 砝码称重 解(动态规划+01背包+位集合)

设有1g2g3g5g10g20g的砝码各若干枚(其总重 $ \le 1000$),可以表示成多少种重量?

HEX9CF的技术博客 1788

线性动态规划入门之挖地雷

比如1与3之间是1代表1可以到33不可以到1。我们这么想假设1与2,3,4都链接只有这两层,那么我们找到到达2,3,4这三个点的可以挖的地雷数量,然后找到最大的即可。这是针对两层,那三层呢,比如3,4又连接着,5.那么我们接着5从与5链接的3,4选出最大的,而不用关心3,4是怎么转化的。注意了,输出路径,我们开个前缀数,这个数记录每个点的前缀,最后我们选出最大路径是以那个点结尾,我们不断找他的前缀,直到他的某个前缀是0我们就可以输出x编号。dp【i】的含义是以i结尾的挖地雷的总值。

m0_73862548的博客 447

洛谷-【动态规划】-P2196 挖地雷

目背景 NOIp1996提高第三 目描述 在一个地图上有NN个地窖(N \le 20)(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。 输入输出格式 输入格式: 有若干行。 ...

代码屋-CODE HOUSE 729

adams入门详解以及21个典型实例分析

adams入门详解,其中还包含有21个实例的txt文档,只需在adams界面下打开这些文档就可以看到造型和分析画面。

上一篇: luogu2782 友好城市
下一篇: ybt1974 回文日期(NOIP2016普及组第2题)
WDAJSNHC
博客等级 码龄12年 71粉丝 409原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值