哲学原理5294 挖地雷

by admin on 2018年12月16日

5294 挖地雷

 

 时间限制: 1
s

 空间范围: 1000
KB

 题目等级 : 黄金
戈尔德(Gold)

题解

 查看运行结果

 

 

题目叙述 Description

在一个地形图及有N个地窖(N<=20),每个地下室中盖有早晚数额之地雷。同时,给来地下室之间的接连路。当地窖及其连接的数让起下,某人能够由第一独地窖起头挖掘地雷,然后可以本着指出的连天为下挖掘(仅会选一样久路线),当任连接时打地雷工作截至。设计一个开挖地雷的方案,使有人会开到无限多之地雷。

输入描述 Input Description

输入文件mine.in有若干推行。

第1履行就来一个数字,表示地窖的个数N。

第2实践有N个数,分别代表每个地下室中的地雷个数。

第3执及第N+1行代表地窖之间的连天意况:

第3履行有n-1只数(0要么1),表示第一独地窖至第2个、第3个、…、第n单地窖有吗路径连接。如第3行事1
1 0 0 0 …
0,则象征第1独地窖至第2独地窖有路子,至第3个地窖有途径,至第4单地窖、第5单、…、第n只地窖没有路。

第4实施有n-2单数,表示第二只地窖至第3独、第4独、…、第n独地窖有否路径连接。

… …

第n+1行有1独数,表示第n-1独地窖至第n个地窖有呢路径连接。(为0表示从没途径,为1代表有路)。

 

输出描述 Output Description

输出文件wdl.out有半点履数据。

第一尽代表开得极其多地雷时的挖地雷的逐一,各地窖序号间以一个空格分隔,不得有剩余的空格。

次执行仅出一个屡屡,表示会开到之突出多地雷数。

 

样例输入 Sample Input

   

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

 

样例输出 萨姆ple Output

   

1 3 4 5
27

 

多少范围与提醒 Data Size & Hint

(N<=20)

 本题是一个经文的动态规划问题。很扎眼,题目规定所有路线都是就为的,所以满足无后效性原则以及极其优化原理。设W[i]否第i只地窖所珍藏有地雷数,A[i][j]意味着第i单地窖与第j单地窖之间是否生通路,F[i]否于第i个地窖先河万分多得开掘起之地雷数,则如同下递归式:
  F[i]=max{ W[i]+ F[j]} (i<j<=n , A[i][j]=true)
  边界:F[n]=W[n]
  于是不怕得经递推的法,从后F(n)往前逐个寻来装有的F[i],再从中寻找一个最好特其余就是为问题2之解。对于现实所动的门道(问题1),可以通过一个向后的链接来兑现。

最后一个接触深坑

分明答案不唯!!!!!!!

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 using namespace std;
 5 const int MAXN=21;
 6 int a[MAXN];
 7 int map[MAXN][MAXN];
 8 int f[MAXN];
 9 int pre[MAXN+5];
10 int pd;
11 int out(int x)
12 {
13     if(pre[x]!=x)
14     out(pre[x]);
15     printf("%d ",x);
16 }
17 int main()
18 {
19     int n;
20     scanf("%d",&n);
21     for(int i=1;i<=n;i++)
22     scanf("%d",&a[i]);
23     for(int i=1;i<=n;i++)
24     f[i]=a[i];
25     pre[1]=1;
26     for(int i=1;i<=n-1;i++)
27     {
28         for(int j=i+1;j<=n;j++)
29         {
30             scanf("%d",&pd);
31             if(pd==1)map[i][j]=1;
32             else map[i][j]=0;
33         }
34     }
35     if(n==2&&map[1][2]==0)
36     {
37         printf("2\n%d",a[2]);
38         return 0;
39     }
40     for(int i=1;i<=n;i++)
41     {
42         for(int j=1;j<=n;j++)
43         {
44             if(map[i][j]==1)
45             {
46                 if(f[i]+a[j]>f[j])
47                 pre[j]=i;
48                 f[j]=max(f[i]+a[j],f[j]);
49                 
50             }
51         }
52     }
53     int ans=0;
54     int where;
55     for(int i=1;i<=n;i++)
56         if(f[i]>ans)ans=f[i],where=i;
57     out(where);
58     printf("\n");
59     printf("%d",ans);
60     return 0;
61 }

 

1.3 操作系统的架构

操作系统是用户以及硬件主机的接口,主旨功能在于任务调度和硬件抽象,现有的操作系统之间的尽充足不同在于内核在全体代码里面的百分比。

重点暴发单内核、混合本、微内核、外内核这几栽架构。

单内核、混合本、微内核、外内核的别
哲学原理 1

  • 单内核:内核所有的效益代码全体都运作于同一个水源空间内,优点是性质性能大高,缺点是计划性复杂,稳定性不丰裕好;
  • 微内核:类似C/S服务形式,惟有最基础之代码会运作于本空间,其他的都运行为用户空间,通过音信机制来互音信。优点是安静强,缺点性能于逊色;
    哲学原理 2
  • 混合本:性能与安定的降产物,完全是因为设计者举行用户从定义;
  • 外内核:比微内核更加极端,连硬件抽象工作还付用户空间,内核只需要保证应用程序访问硬件资源时,硬件是空之

第一章 引论

咦是操作系统?对用户而言,操作系统是用户与硬件接口,它用硬件资源抽象出来,方便调用。对硬件而言,它是总括机资源的调度者。所以

操作系统:可以提供被其余程序方便编写并运行的程序。

鉴于程序来运转程序,而无是程序自己来运行,立即是操作系统提供的虚拟化的显示
哲学原理 3

哲学原理 4

Technorati 标签:
操作系统,原理

1.1 操作系统发展

1.1.1 单任务格局

处理器只好让一个顺序把。

1.1.3 虚拟化的益处

虚拟化的利益是,将下层复杂的逻辑转换为上层简单的逻辑,方便人类读懂。

1.1.2 OS的基本上任务形式

加电之后,首先运行OS,随时可载入其他程序执行。执行了之后切换回OS本身。

可是每一趟仍旧如等这程序执行完毕,才会跟着载入下只程序执行。任何中断事件,都会见中断正在周转的主次。

程序执行完毕,会拿CPU归还给OS。从而继续OS本身的周转。这种操作系统就是是止任务操作系统,典型代表就是是DOS。

批处理:OS将大半只次一个一个之排列起来。省去了人工载入的经过。所以批处理操作系统绝对单任务的话又上了同步,可是精神仍然是一个次把资源。

还后来OS针对网时钟中断开发了顿服务程序,也不怕是差不多任务OS中之调度程序。中断来临,CPU遵照中断向量表的内容,指向调度程序所当的内存地址入口,执行调度程序的代码。调度程序用CPU的执行过反至各类应用程序所于的内存地址入口。每一趟中断,调度程序为得之优先级,指向不同程序的输入。如若还尚未实施了,会活动保存运行状态。从微观上看,每个应用程序独占CPU,不过日子很小,10ms

多任务操作系统的首要性就是是来基本上任务调度程序。

1.2 操作系统的重中之重意义

操作系统的紧要功效暴发:

  • 过程的始建与调度
  • 内存空间的管制
  • 设备管理
  • 文件系统管理

足见到操作系统其实蕴含了电脑的CPU、内存、IO设备非凡极基本要素的管理。再同不良注脚了操作系统其实就是是硬件与用户的接口,可以用下层复杂逻辑转换为用户易懂的逻辑。优良给用户之大管家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图