挖地雷dp c++
//
// Created by Arc on 2020/4/27.
// /*题文:
* 在一个地图上有n个地窖
* ,每个地窖中没有一定数量的地雷,
* 同时给出地窖之间连接的路径,
* 并规定路径都是单向的。
* 且保证都是小序号地窖指向大序号地窖,
* 也不存在可以从一个地窖出发,经过若干后又回到原来地窖的路径
* 某人可以从任意一处开始挖地雷,然后沿着指出的路径往下挖,只能选择一条路径,当没有连接时,挖地雷工作结束设计,一个挖地雷的方案使他能挖到最多的地雷
* 输入:
* 第一行为坑总数
* 第二行为每个坑的地雷数
* 接下来的几行是都有哪两个坑可以连接,
* 输入0 0 表示结束
* 输出:
* 最大地雷数以及路径
* (一看见这种路径,是不是直接想到一个数组存放地址啊) */
//思路:
//我们知道dp有个无后效性原则
//你看看上面题目:
//规定路径都是单向的。
//* 且保证都是小序号地窖指向大序号地窖,
//* 也不存在可以从一个地窖出发,经过若干后又回到原来地窖的路径
//--很明显了啊
//
//
/*存放变量:
* 和前面的dp几乎一样,也是从倒数第二个逆推
* w[i]是指每个坑有几个地雷
* a[i][j]是指i,j之间是否有通路//和城市交通线不同,这个地方不是没有通路就为0,所以输入方式也不太一样
* f[i]表示i往后的最多能挖到多少
* c[i]是个存放位置的.
*/
#include<bits/stdc++.h>
using namespace std;
int main(){
long f[]={},w[]={},c[];
bool a[][]={};
long n;
long x,y;
memset(a,false,sizeof(a));
cin>>n;
for (int i = ; i <=n ; ++i) {//每个坑的地雷数
cin>>w[i]; }
do{
cin>>x>>y;
if((x!=)&&(y!=)){
a[x][y]=true;
} }while((x!=)||(y!=));
f[n]=w[n];//初始值
for (int j = n-; j >= ; j--) {
int l=;
for (int i = j+; i <=n ; ++i) {
if(a[j][i] && (l<f[i])){
l=f[i];
c[j]=i;
} }
f[j]=l+w[j];//本次最长等于本坑地雷数加后面的 }
int k=;
for (int m = ; m <= n; ++m) {
if(f[m]>f[k])
{
k=m;
}
}
cout<<f[k]<<endl;
cout<<k;
k=c[k];
while(k!=){
cout<<"-"<<k;
k=c[k]; }
return ; }
挖地雷dp c++的更多相关文章
- 洛谷P2196 挖地雷(dp)
题意 题目链接 Sol 早年NOIP的题锅好多啊.. 这题连有向边还是无向边都没说(害的我wa了一遍) 直接\(f[i]\)表示到第\(i\)个点的贡献 转移的时候枚举从哪个点转移而来 然后我就用一个 ...
- 开始奇妙的DP之旅
铭记各位大佬教导,开始看一些很迷的动态规划,那就从比较典型的01背包开始吧,想想还是从比较简单的导弹拦截开始吧,说简单都是骗人的,还是看采药吧. 一.动态规划 刚听到动态规划这个东西,据HLT大佬所言 ...
- [LUOGU] P2196 挖地雷
题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径.当地窖及其连接的数据给出之后,某人可以从任一处 ...
- noip1998 提高组t3 挖地雷
题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径.当地窖及其连接的数据给出之后,某人可以从任一处 ...
- 6.22 集训--DP复习一
总结 下午的突击练习完全不在状态 A.拦截导弹简单版 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发 ...
- BZOJ 1911: [Apio2010]特别行动队 [斜率优化DP]
1911: [Apio2010]特别行动队 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 4142 Solved: 1964[Submit][Statu ...
- 2013 Asia Changsha Regional Contest---Josephina and RPG(DP)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4800 Problem Description A role-playing game (RPG and ...
- AEAI DP V3.7.0 发布,开源综合应用开发平台
1 升级说明 AEAI DP 3.7版本是AEAI DP一个里程碑版本,基于JDK1.7开发,在本版本中新增支持Rest服务开发机制(默认支持WebService服务开发机制),且支持WS服务.RS ...
- AEAI DP V3.6.0 升级说明,开源综合应用开发平台
AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...
随机推荐
- matplotlib中文显示乱码解决方法
在学习<机器学习实战>这本书的决策树一章时,要用matplotlib画出决策树,然而在显示中文时出现了乱码 import matplotlib.pyplot as plt #定义文本框和箭 ...
- 深入了解JVM-方法区
本文首发于微信公众号[猿灯塔],转载引用请说明出处 今天呢!灯塔君跟大家讲: 深入了解JVM-方法区 当JVM使用类装载器装载某个类时,它首先要定位对应的class文件,然后读入这个class文件,最 ...
- 前端工程化的的理解,浅谈web工程化的开发流程
1. 什么是前端工程化 自有前端工程师这个称谓以来,前端的发展可谓是日新月异.相比较已经非常成熟的其他领域,前端虽是后起之秀,但其野蛮生长是其他领域不能比的.虽然前端技术飞快发展,但是前端整体的工程生 ...
- 快速认识elasticsearch
快速认识elasticsearch what is Elasticsearch Elasticsearch被称为"Lucene穿了一件json的外衣"---把Lucene用Ne ...
- 从此不怕Synchronized锁
Synchronized的使用 Synchronized是通过监视器保证线程同步从而保证线程安全.但是Synchronized锁可以锁对象和锁类,并会产生不同的效果,通过下面的案例彻底理解Sync ...
- Python语法的使用和简介
前言 Python的语法和其它编程语言的语法有所不同,编写Paython程序之前需要对语法有所了解,才能编写规范的Python程序. 输入输出 print() # 打印显示input() # 输入内容 ...
- Django---进阶9
目录 自定义分页器的拷贝及使用 Forms组件 前戏 基本使用 校验数据 渲染标签 展示提示信息 钩子函数(HOOK) forms组件其他参数及补充知识点 作业 自定义分页器的拷贝及使用 " ...
- ASP.NET网页请求以及处理全过程(反编译工具查看源代码)
本文是自己查看源码后的个人总结,不保证其准确性.大家可作为参考. 浏览器和服务器之间的通信. 当敲一个域名到浏览器上面,然后回车的时候,如:http://www.baidu.com/index.asp ...
- Mysql 常用语句实战(2)
前置 sql 语句 用来创建表.插入数据 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- ...
- Python面向对象01 /面向对象初识、面向对象结构、类、self、实例化对象
Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象初识 2. 面向 ...