切换到宽版
  • 12237阅读
  • 10回复

几道复赛练习题 [复制链接]

上一主题 下一主题
离线wing
 
只看楼主 倒序阅读 0 发表于: 2006-05-21
— 本帖被 stevenjl 从 竞赛题库 移动到本区(2007-08-12) —
数据结构图复习试题(一)
第一题:医院设置

问题描述:
  设有一颗二叉树,如图5-1:




其中,图中的数字表示节点中居名的人口。圈边上数字表示节点编号,现在要求在某个节点上建立一个亿元,使所有居民所走的路程之和为最小,同时约定,相邻接点之间的距离为1。
如上图中,若医院建在:
1处,则距离和=4+12+2*20+2*40=136
3处,则距离和=4*2+13+20+40=81
……
输入:
第一行一个整数n,表示树的结点数。(n<=100)
接下来的n行每行描述了一个结点的状况,包含三个整数,整数之间用空格(一个或多个)分隔,其中:第一个数为居民人口数;第二个数为左链接,为0表示无链接;第三个数为右链接。
输出:
一个整数,表示最小距离和。
样例:
hospital.in
5
13 2 3
4 0 0
12 4 5
20 0 0
40 0 0

hospital.out
81


第二题:宫廷守卫

问题描述:
从前有一个王国,这个王国的城堡是一个矩形,被分为M*N个方格。一些方格是墙,而另一些是空地。这个王国的国王在城堡里设了一些陷阱,每个陷阱占据一块空地。
一天,国王决定在城堡里布置守卫,他希望安排尽量多的守卫。守卫们都是经过严格训练的,所以一旦他们发现同行或同列中有人的话,他们立即向那人射击。因此,国王希望能够合理地布置守卫,使他们互相之间不能看见,这样他们就不可能互相射击了。守卫们只能被布置在空地上,不能被布置在陷阱或墙上,且一块空地只能布置一个守卫。如果两个守卫在同一行或同以劣,并且他们之间没有墙的话,他们就能互相看见。(守卫就像象棋里的车一样)
你的任务是写一个程序,根据给定的城堡,计算最多可布置多少个守卫,并设计出布置的方案。
输入:
第一行两个整数M和N(1<=M,N<=200),表示城堡的规模。
接下来M行N列的整数,描述的是城堡的地形。第i行j列的数用ai,j表示。
ai,j= 0,表示方格[i,j]是一块空地;
ai,j= 1,表示方格[i,j]是一个陷阱;
ai,j= 2,表示方格[i,j]是墙。
输出:
第一行一个整数K,表示最多可布置K个守卫。

样例:
guards.in
3 4
2 0 0 0
2 2 2 1
0 1 0 2

guards.out
2

           
           
           
样例数据如图5-2(黑色方格为墙,白色方格为空地,圆圈为陷阱,G表示守卫)


             
             
             
             
             
   G        
           
       G    











第三题: 公路修建

问题描述:
某国有n个城市,他们互相之间没有公路相通,因此交通十分不便,为解决这一“行路”的问题,政府决定修建公路。修建公路的任务由各城市共同完成。
修建公路分若干轮完成。在每一轮中,每个城市选择一个与它最近的城市,申请修建通往该城市的公路。政府负责审批这些申请以决定是否同意修建。
政府审批的规则如下:
(1)如果两个或以上城市申请修建同一条公路,则让他们共同修建。
(2)如果三个或以上的城市申请修建的公路成环。如下图,A申请修建公路AB,B申请修建公路BC,C申请修建公路CA。则政府将否决其中最短的一条公路的修建申请;






   


(3)其他情况的申请一律同意。
一轮修建结束后,可能会有若干城市可以通过公路直接或间接相连。这些可以互相连通的城市即组成“城市联盟”。在下一轮修建中,每个“城市联盟”将被看作一个城市,发挥一个城市的作用。
当所有城市被组合成一个“城市联盟”时,修建工作也就完成了。
你的任务是根据城市的分布和前面讲到的规则,计算出将要修建的公路总长度。
输入:
   第一行一个整数n,表示城市的数量。(n<=5000)
以下n行,每行两个整数x和y,表示一个城市的坐标。(-1000000<=x,y<=1000000)
输出:
一个实数,四舍五入保留两位小树,表示公路总长。(保证有惟一解)
样例:
road.in
4
0 0
1 2
-1 2
0 4

road.out
6.47

修建的公路如图所示:





速度限制

问题描述:
在这个繁忙的社会中,我们往往不再去选择最短的道路,而是选择最快的路线。开车时每条道路的限速成为最关键的问题。不幸的是,有一些限速的标志丢失了,因此你无法得知应该开多快。一种可以辩解的解决方案是,按照原来的速度行驶。你的任务是计算两地间的最快路线。
你将获得一份现代化城市的道路交通信息。为了使问题简化,地图只包括路口和道路。每条道路是有向的,只连接了两条道路,并且最多只有一块限速标志,位于路的起点。两地A和B,最多只有一条道路从A连接到B。你可以假设加速能够在瞬间完成并且不会有交通堵塞等情况影响你。当然,你的车速不能超过当前的速度限制。
输入:
输入文件speed.in的第一行是3个整数N,M和D(2<=N<=150),表示道路的数目,用0..N-1标记。M是道路的总数,D表示你的目的地。接下来的M行,每行描述一条道路,每行有4个整数A(0<=A<N),B(0<=B<N),V(0<=V<=500)and L,(1<=L<=500),这条路是从A到B德,速度限制是V,长度为L。如果V是0,表示这条路的限速未知。如果V不为0,则经过该路的时间T=L/V。否则T=L/Vold , Vold   是你到大概路口前的速度。开始时你位于0点,并且速度为70。
输出:
输出文件speed.out仅一行整数,表示从0到D经过的城市。
输出的顺序必须按照你经过这些城市的顺序,以0开始,以D结束。仅有一条最快路线。
样例:
speed.in

6 15 1
0 1 25 68
0 2 30 50
0 5 0 101
1 2 70 77
1 3 35 42
2 0 0 22
2 1 40 86
2 3 0 23
2 4 45 40
3 1 64 14
3 5 0 23
4 1 95 8
5 1 0 84
5 2 90 64
5 3 36 40

speed.out
0 5 2 3 1
离线wing
只看该作者 1 发表于: 2006-09-24
有没有测试数据?
离线菲菲软雨
只看该作者 2 发表于: 2006-10-03
有没有答案?
谢谢
离线菲菲软雨
只看该作者 3 发表于: 2006-10-03
请把答案发在我的油箱里:
zhaoyifei36@163.com
离线wf-cn
只看该作者 4 发表于: 2006-11-02
全力支持
打印出来
回去研究
离线syc_pascal
只看该作者 5 发表于: 2006-12-24
暴难题!看谁做得出来!
{回溯}pascal
在5*7的棋盘中,如下图
(horse1.in)
# # # # # # #
# # # # # # #
# # # # # # #
# # # # # # #
* # # # # # #

其中*为马,#为棋盘,求从左下角出发,要求走遍整个棋盘,使该马从右上方出去,并标名次序(如1,2,3,4,5……),起始点标明0;

需要注意的是,玩过中国象棋的人一定知道,马是走日字格的,此题也是如此,比如:
{1}
# # # # # # #
# # # # # # #
# # # # # # #
# # 1 # # # #
0 # # # # # #


!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!望有人能早日做出此题,小弟一定感激不尽~~~~~!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
I KNOW I CAN!
你行,我也行!
你傻,我不傻!
全面落实社会主义骗分观,学习三个代表的成功骗分精神!
离线syc_pascal
只看该作者 6 发表于: 2006-12-25
快来做啊!
I KNOW I CAN!
你行,我也行!
你傻,我不傻!
全面落实社会主义骗分观,学习三个代表的成功骗分精神!
离线clwxzh57
只看该作者 7 发表于: 2007-08-24
easy
离线suifeng
只看该作者 8 发表于: 2007-11-15
到在线评测网上去测试一下呀!
离线amyhab
只看该作者 9 发表于: 2007-11-15
骑士遍历EASY
To Be,Or not to be.That's a Question!!!!!!!
快速回复
限100 字节
 
上一个 下一个