1262:【例9.6】挖地雷

时间限制: 1000 ms         内存限制: 65536 KB
提交数: 9596     通过数: 4628

【题目描述】

在一个地图上有nn个地窖(n≤200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,且保证都是小序号地窖指向大序号地窖,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任意一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。

【输入】

第一行:地窖的个数;

第二行:为依次每个地窖地雷的个数;

下面若干行:

xi yi   //表示从 xi 可到 yi,xi<yi。

最后一行为"00"表示结束。

【输出】

k1−k2−…−kv    //挖地雷的顺序

挖到最多的雷。

【输入样例】

6
5 10 20 5 4 5
1 2
1 4
2 4
3 4
4 5
4 6
5 6
0 0

【输出样例】

3-4-5-6
34

【分析】

设a[i]存储地窖中地雷数,f[i]以第i个地窖为起点最多可以挖到的地雷数,p[i]记录后续地窖位置。逆推实现。

(1)划分阶段。

阶段:按地窖编号划分阶段;样例中共有6个阶段。

(2)确定状态和状态变量。

状态:按地窖编号划分状态。状态信息用f[i]表示。

(2)确定决策并写出状态转移方程。

f[i]的值从哪来?当然是从后面f[i]来。决策:后面有通路的地窖中,选可以挖到地雷数最多的那个,策略:最多地雷数。故,状态转移方程: f[i]=max{ a[i]+f[j] | c[i][j]=1, i<j<=n }。

(4)寻找边界条件。

逆推时, 边界:f[n]=a[n]。目标:max{ f[i] | 1<=i<=n }。

(5)设计并实现程序。数据存储和问题求解过程如下:

【参考代码】

#include <stdio.h>
#define N 210
int n;
int x,y;
int a[N];       // 每个地窖的地雷数
int c[N][N];    // 两个地窖中是否有通路
int f[N];       // 以第i个地窖为起点最多可挖到的地雷数
int p[N];       // 后续地窖的位置
int ans,s;      // ans最大的地雷数,s路径起点编号
int main()
{int i,j;int maxn,k;scanf("%d",&n);for(i=1;i<=n;i++)       //输入每个地窖中的地雷数 scanf("%d",&a[i]);while(scanf("%d%d",&x,&y) && x||y){c[x][y]=1;          //1连通,0不连通}f[n]=a[n];  // 边界for(i=n-1;i>=1;i--){k=0;maxn=0;for(j=i+1;j<=n;j++){if(c[i][j]==1 && f[j]>maxn){maxn=f[j];k=j;}}f[i]=a[i]+maxn;p[i]=k;}ans=f[1];s=1;for(i=2;i<=n;i++)      //找f[i]中的最大值 {if(f[i]>ans){ans=f[i];s=i;}}while(p[s]!=0)          //输出挖雷顺序 {printf("%d-",s);s=p[s];}printf("%d\n",s);printf("%d\n",ans);return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1262

信息学奥赛一本通(1262:【例9.6】挖地雷)相关推荐

  1. 信息学奥赛一本通 1262:【例9.6】挖地雷

    [题目链接] ybt 1262:[例9.6]挖地雷 [题目考点] 1. 动态规划 2. 图论 [解题思路] 根据题意,每个地窖是一个顶点,每条路径是一条有向边,这是个有向无环图,可以用动态规划的方法来 ...

  2. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

  3. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  4. 信息学奥赛一本通 2021:【例4.6】最大公约数

    [题目链接] ybt 2021:[例4.6]最大公约数 [题目考点] 1. while循环 2. 求最大公约数 辗转相减法 辗转相除法 [解题思路] 解法1:枚举 取较小数字,从该数字的值开始从大到小 ...

  5. 信息学奥赛一本通(2032:【例4.18】分解质因数)

    2032:[例4.18]分解质因数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 582     通过数: 376 [题目描述] 把一个合数分解成若干个质因数乘积 ...

  6. 信息学奥赛一本通——2062:【例1.3】电影票

    2062:[例1.3]电影票 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 57341     通过数: 34230 [题目描述] 已知一位小朋友的电影票价是10 ...

  7. 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制

    [题目链接] ybt 1278:[例9.22]复制书稿(book) 洛谷 P1281 书的复制 [题目考点] 1. 动态规划:线性动规 [解题思路] 该题可以抽象为:将由m个数字构成的序列分成k个子段 ...

  8. 信息学奥赛一本通1267:【例9.11】01背包问题(二维dp与滚动数组优化)

    [题目描述] 一个旅行者有一个最多能装 MM 公斤的背包,现在有 nn 件物品,它们的重量分别是W1,W2,...,WnW1,W2,...,Wn,它们的价值分别为C1,C2,...,CnC1,C2,. ...

  9. 信息学奥赛一本通C++语言-----2036:【例5.3】开关门

    [题目描述] 宾馆里有n(2≤n≤1000)n(2≤n≤1000) 个房间,从1∼n1∼n 编了号.第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是22 的倍数的房间"相反处理& ...

  10. 信息学奥赛一本通——2068:【例2.6】鸡兔同笼

    大家好(๑╹◡╹)ノ" 这里是小蒟蒻 一天没更新了呢! 今天给大家带来<信息学奥赛一本通--2068:[例2.6]鸡兔同笼> 题目: 2068:[例2.6]鸡兔同笼 时间限制: ...

最新文章

  1. java 异常的分类并举例_Java异常处理中的一些特殊情况举例
  2. windows 安装MySQL服务 zip解压程序
  3. 联想Z5手机夺得京东销量第一,联想这是要翻盘的节奏吗?
  4. 解决hive交互模式退格键乱码
  5. 面试官问你final、finally、finalize的区别
  6. python表单管理系统_python3开发进阶-Django框架的Form表单系统和基本操作
  7. oracle自增列问题i,Oracle序列 和 SQL SERVER 自增列的问题-oracle
  8. java day16 【异常、线程】
  9. Struts秘籍之起式:第1.6式:管理Struts配置文件
  10. android adl格式转换,ADl871型模/数转换器的应用
  11. 捻花成佛:成为股市高手需要读多少书
  12. PHP+经贸时间轴 毕业设计-附源码211617
  13. hive优化——并行执行
  14. 从MySQL Bug#67718浅谈B+树索引的分裂优化
  15. 在ThinkPad W500 A98上升级Windows 7以及安装硬件驱动和相关程序
  16. STM32F103RC 2路ADC 采集显示,水位传感器、MQ2
  17. 【Redis】错误:failed: Hostname must not be empty or null
  18. bootstrap支持ie8 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
  19. 电路知识经典汇总(邱关源)
  20. outlook服务器信息怎么设置,outlook2010怎么设置

热门文章

  1. varchar和Nvarchar区别
  2. DotNetNuke 4/5 安装提示 msajax错误,下载AJAX 1.0即可解决
  3. 考考你,能看出这一段代码是用哪个编程语言写的吗?
  4. 从Hadoop到ClickHouse,现代BI系统有哪些问题?如何解决?
  5. STM32之窗口看门狗例程
  6. 芯唐语音识别_大联大品佳推出基于新唐科技ISD9160+Cyberon算法的语音识别方案
  7. centos 释放swap_centos6.6关闭与打开swap(整理)
  8. 用python画桃花_python 画图
  9. leetcode 打印_剑指 Offer 总结 - leetcode 剑指offer系列
  10. 重磅! SpringBoot+Sentinel+Nacos已撸完