2012年复赛综合训练(一):第一题:nbsp;…
第一题: 穿越封锁线(cross.pas/c/cpp)
题目描述:
对于窃取情报和破译密码,Feli简直就是天才!
Feli知道我军3721整编军是我军一支重点培养的生力军,如果在这次行动中遭受损失,那对我军将是一个十分严重的实力打击。这么重要的消息,必须赶紧传达到指挥步!由于抗战期间交通十分落后,Feli只好委托Lucky连夜将该消息送达总部。接到委托,Lucky立即启程。
从情报站到指挥部之间有许多错综交叉的道路,道路和道路的交叉处都有地方可以供Lucky躲藏。由于这里是交通要道,敌人也对这个地带十分关注:他们会时不时对在某些道路上派人巡逻。虽然Lucky可以用精准的枪法将他们干掉,但是现在身负重任,不能打草惊蛇,所以必须避开他们。这意味着,如果某条道路有人巡逻,那么Lucky将无法穿过。时间紧迫,Lucky必须尽快到达总部。现在Lucky再次向你求助,他应该如何行走才能用最短的时间到达指挥部。
说明:在每个交叉路口,Lucky都能选择躲藏和行走。敌人的巡逻是周期循环的,他们总是以分钟为单位巡逻某条道路,在该分钟过去后离开。针对每条道路,我们假设Lucky总是刚好用1分钟时间走完。
针对下列数据:
V={1,2,3,4,5}; E={(1,2),(2,3),(3,4),(2,4),(4,5),(1,3),(3,5)}
结点1为情报站,5为指挥部,其余为交叉路口。
周期为4分钟。
每个周期的第1分钟有巡逻的边为{(1,2),(2,4),(4,5)}
每个周期的第2分钟有巡逻的边为{(1,3),(2,3),(3,5)}
每个周期的第3分钟有巡逻的边为{(3,4),(4,5)}
每个周期的第4分钟没有巡逻边。
这样,Lucky可以在第一分钟走边(1,3),第二分钟躲藏,第3分钟走边(3,5),消耗3分钟,时间最短。
数据说明:
每组输入数据第一行有2个整数n和m(1≤n≤100; 1≤m≤500),代表地图有n个结点m条边。1号结总是代表情报站,n号结点总是代表指挥部。
接下去m行是对地图的描述,每行有2个小于n的整数,分别代表一条边两端的结点编号。(如果边被重复描述,仍表示只有一条边)。
再接下去一行有一个整数k(0≤k≤10)代表周期长度。
后来的数据都是对周期巡逻边的描述,每行有2个整数,表示被关注的边。0 0则表示对周期中某一分钟的巡逻边描述结束。数据保证在该段恰存在k个0 0。
输出数据仅有一行,如果Lucky可以到达指挥部,则输出到达指挥部的最短时间。如果不能到达则输出“No solution.”
样例输入(cross.in):
5 7
1 2
2 3
3 4
2 4
4 5
1 3
3 5
4
1 2
2 4
4 5
0 0
1 3
2 3
3 5
0 0
3 4
4 5
0 0
0 0
样例输出(cross.out):
3
一开始思路是对的,但是初值赋错了,只过了4个点。
程序写的很乱,变量名很不科学。
var
n,m,k:longint;
a:array[1..500+1,1..500+1,0..10+1]of longint;
d:array[1..100+1,0..10+1]of longint;
mark:array[1..100+1,0..10+1]of boolean;
procedure init;
var
i,x,y:longint;
begin
read(n,m);
for i:=1 to m do
begin
read(x,y);
a[x,y,0]:=1;
a[y,x,0]:=1;
end;
read(k);
for i:=1 to k do
begin
while true do
begin
read(x,y);
if (x=0)and(y=0) then break;
a[x,y,i]:=-1;
a[y,x,i]:=-1;
end;
end;
end;
procedure main;
var
i,j,kk,kkk,min,mini:longint;
begin
for i:=2 to 100+1 do
for j:=0 to 11 do d[i,j]:=maxlongint div 2;
fillchar(mark,sizeof(mark),0);
for j:=1 to 11 do begin d[1,j]:=j; end;
while true do
begin
min:=maxlongint div 2;
for i:=1 to n do
for j:=0 to k do
if (d[i,j]<min)and(mark[i,j]=false) then begin min:=d[i,j]; mini:=i; kk:=j; end;
if min=maxlongint div 2 then exit;
mark[mini,kk]:=true;
if k<>0 then kkk:=(kk) mod k+1
else kkk:=0;
for i:=1 to n do
if not mark[i,kkk] then
if (a[mini,i,0]+a[mini,i,kkk]>0) and(d[mini,kk]+1<d[i,kkk]) then
begin
d[i,kkk]:=d[mini,kk]+1;
for j:=kkk+1 to k do
if d[i,kkk]+(j-kkk)<d[i,j] then d[i,j]:=d[i,kkk]+j-kkk;
for j:=1 to kkk-1 do
if d[i,kkk]+(j-kkk+k)<d[i,j] then d[i,j]:=d[i,kkk]+j-kkk+k;
end;
end;
end;
procedure print;
var
i,min:longint;
begin
min:=maxlongint div 2;
for i:=0 to k do
if d[n,i]<min then min:=d[n,i];
if min=maxlongint div 2 then writeln('No solution.')
else
write(min);
end;
begin
assign(input,'cross.in');
assign(output,'cross.out');
reset(input);
rewrite(output);
init;
main;
print;
close(input);
close(output);
end.
2012年复赛综合训练(一):第一题:nbsp;…相关推荐
- NOIP2010-普及组复赛模拟试题-第一题-手机
题目背景 Background 现在手机使用越来越广泛了 题目描述 Description 一般的手机的键盘是这样的: 要按出英文字母就必须要按数字键多下.例如要按出 x 就得按 9 两下,第一下会 ...
- NOIP2012复赛 普及组 第一题
1.5 编程基础之循环控制 43 质因数分解 http://noi.openjudge.cn/ch0105/43/ #include <bits/stdc++.h> using names ...
- NOIP2016普及组复赛第一题的AC程序加题解pascal
P老师需要去商店买n支铅笔作为小朋友们参加NOIP的礼物.她发现商店一共有 3种包装的铅笔,不同包装内的铅笔数量有可能不同,价格也有可能不同.为了公平起 见,P老师决定只买同一种包装的铅笔.商店不允许 ...
- 问题 H: 方块填数(2012年蓝桥决赛第5题--dfs)
问题 H: 方块填数(2012年蓝桥决赛第5题) 时间限制: 1 Sec 内存限制: 128 MB [提交][状态][讨论版] 题目描述 "数独"是当下炙手可热的智力游戏.一般认为 ...
- 2012-2018普及组第一题题解
noip2018 标题统计 [题目描述] 凯凯刚写了一篇美妙的作文,请问这篇作文的标题中有多少个字符? 注意:标题中可能包含大.小写英文字母.数字字符.空格和换行符.统计标题字符数时,空格和换行符不计 ...
- 当计算机运行死机时 可按,2012年会计电算化考试-理论题及答案I套
<2012年会计电算化考试-理论题及答案I套>由会员分享,可在线阅读,更多相关<2012年会计电算化考试-理论题及答案I套(8页珍藏版)>请在人人文库网上搜索. 1.2012年 ...
- 2012河北省职称计算机题,2012河北省职称计算机基础知识题库
2012河北省职称计算机基础知识题库 下列关于光盘特点的叙述中,正确的是________. A.光盘存储容量小 B.光盘位价格低 C.光盘携带不便 D.光盘读写速度很低 [正确答案:]B 下列选项中, ...
- 2012-2020蓝桥C++ B组蓝桥杯省赛真题(第一题)
http://t.csdn.cn/zTemz 原文链接 目录 2012 第一题:微生物增殖 2013第一题:高斯日记 2014第一题:啤酒和饮料 2015第一题:奖券数目 2016 第一题:煤球数 ...
- 四川大学线下编程比赛第一题:数字填充
四川大学线下编程比赛第一题:数字填充 公布公司: 有 效 期: CSDN 2014-09-27至2015-09-26 难 度 等 级: 答 题 时 长: 编程语言要求: 120分钟 C C++ Jav ...
最新文章
- plotly自定义股票数据绘图
- “大树底下”的阿里电商 淘品牌的“配角变名角”
- 字符串基础类型拓宽的操作,转换成整数值
- c++面向对象高级编程 学习十一 类模板、函数模板、成员模板
- php mysql bootstart_PHP MySQL 创建数据库
- javascript复制到黏贴板之完美兼容
- oc和java_oc与java c++语法区别
- 转换预定义的字符为html实体,php把一些预定义的 HTML 实体转换为字符。
- java数组有顺序吗_java – 使用特定顺序对(数组)列表进行排序
- Java实现redis事务
- snipaste安装和使用_snipaste替代品 amp; linux截图解决方案-截图、贴图工具Flameshot...
- python建立数据库连接时出错_python – 尝试连接到localhost上的数据库时出现pyodbc连接错误...
- oracle+调整+表空间,oracle数据库表空间及权限调整示例
- VS2008下easyMule-VeryCD源代码的编译
- 如何在阿里云国际上设置邮箱主机
- 易我数据恢复向导 v2.0 官网
- 西瓜决策树-ID3算法
- Delphi与JAVA 互通AES文件加解密源码(支持D6-XE10)
- 比尔·盖茨买百万亩农地成美“头号地主”,图扑数字孪生农场
- MATLAB 正态(高斯)分布概率密度函数