题目描述

在一个地图上有N个地窖(N≤20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。

当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,

然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。

输入描述

地窖个数N

每个地窖的地雷数

地窖之间的连通状态(0为不通,1为通)

输出描述

第一行 挖最多地雷的顺序,空格隔开

第二行 挖最多地雷的数量

题解

提高组水题

这道题有两个步骤

一、数量

用递推

定义前i个点能挖到的最大数量的地雷为f[i]

则f[i]=max(f[1],f[2],...f[i-1])+a[i](当然前提是连通)

所以答案就是f数组中的最大值

二、顺序

用hs数组记录哪个结点到i,能让f[i]最大

深搜查找总顺序

三、代码

#include<iostream>
using namespace std;
int n,a[55],sum,f[55],hs[55],ans;
bool map[55][55];
void dfs(int x){
if(x<=0) return ;
dfs(hs[x]);
cout<<x<<" ";
}
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>>map[i][j];
for(int i=1;i<=n;i++){
f[i]=a[i];
for(int j=1;j<i;j++){
if(map[j][i]&&f[j]+a[i]>f[i]){
f[i]=f[j]+a[i];
hs[i]=j;
}
}
if(f[i]>sum){
sum=f[i];
ans=i;
}
}
dfs(hs[ans]);
cout<<ans<<endl;
cout<<sum;
return 0;
}

[NOIP1996 提高组] 挖地雷的更多相关文章

  1. 洛谷 P2196 挖地雷 & [NOIP1996提高组](搜索,记录路径)

    传送门 解题思路 就是暴力!!! 没什么好说的,总之,就是枚举每一个起点,然后暴力算一遍以这个点为起点的所有路径,在算的过程中,只要比目前找到的答案更优,就有可能是最后的答案,于是就把路径更新一遍,保 ...

  2. 洛谷 P2347 砝码称重 & [NOIP1996提高组](dp,枚举)

    传送门 解题思路 一看数据范围<1000就坚定了我暴力的决心(不愧是1996年代的题还是t4QAQ) 所以很显然,暴力之中有一点dp的思想,就是把它们像多重背包一样拆分,拆成a1+a2+a3+a ...

  3. noip1998 提高组t3 挖地雷

    题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径.当地窖及其连接的数据给出之后,某人可以从任一处 ...

  4. tyvj4541 zhx 提高组P1

    背景 提高组 描述 在一个N×M的棋盘上,要求放置K个车,使得不存在一个车同时能被两个车攻击.问方案数. 输入格式 一行三个整数,N,M,K. 输出格式 一行一个整数,代表答案对1000001取模之后 ...

  5. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...

  6. NOIP2010提高组乌龟棋 -SilverN

    题目背景 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 题目描述 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起 ...

  7. luogu1003铺地毯[noip2011 提高组 Day1 T1]

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  8. NOIP2016提高组解题报告

    NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合

  9. [NOIP2015] 提高组 洛谷P2615 神奇的幻方

    题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. ...

  10. [NOIP2014] 提高组 洛谷P2038 无线网络发射器选址

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

随机推荐

  1. 【django-vue】封装logger 封装全局异常 封装response 数据库配置 用户表继承AbstractUser配置

    目录 上节回顾 python运行流程 项目目录调整(重要) 关于环境变量的问题 今日内容 1 django后端配置之封装logger 2 后端配置之封装全局异常 补充说明 3 后端配置之二次封装res ...

  2. LeetCode-380 O(1)时间插入、删除和获取随机元素

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/insert-delete-getrandom-o1 题目描述 实现RandomizedSet 类 ...

  3. 自定义view,用来测试屏幕

    public class BezierGestureTrackView extends View { private Bitmap mBufferBitmap; private Canvas mBuf ...

  4. Vue scoped样式

    scoped样式: 作用:让样式在局部生效,防止冲突 写法:<style scoped>

  5. centos7无法下载nginx

    centos7无法下载nginx   1.正常情况下:先下载epel-release 源然后安装yum install -y nginx2.如果不行,试着执行yum clean all &&a ...

  6. 10.MyBatis-Plus的使用

    整合MyBatis-Plus 导入依赖 在解决逆向工程生成的代码报错时候已经给bianen-common导入了依赖 导入数据库的驱动 导入驱动和MySql的版本有关,我安装的MySql版本是5.7.3 ...

  7. CF1404D 题解

    题意 传送门 给定 \(2n\) 个数 \(1,2,\dots,2n\),A 和 B 进行交互,如下规则: A 需要将元素分成 \(n\) 组 \(\texttt{pair}\): B 从每组 \(\ ...

  8. C++ MFC学习 (三)

    视窗口覆盖在框架窗口之上 如果有了 OnDraw 不要再用OnPaint  OnPaint会覆盖掉OnDraw所画内容 1 // MFC_Demo1View.cpp : CMFC_Demo1View ...

  9. SpringMVC请求与响应

    请求 知识点1:@RequestParam 名称 @RequestParam 类型 形参注解 位置 SpringMVC控制器方法形参定义前面 作用 绑定请求参数与处理器方法形参间的关系 相关参数 re ...

  10. Wordpress后台网址安全

    wordpress 固定的后台地址是 网站/wp-admin/ 如果对方知道你是wp建站,然后很自然的就能知道你后台登录地址.然而你密码简单的话,很容易被黑. 所以为了安全考虑,我们需要把这个默认地址 ...