信息学2014年第六题安装饮水机

更新时间:2024-07-12 13:57:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

NHOI2014小学甲组题

2014年南海区青少年信息学奥林匹克竞赛试题

第六题 安装饮水机(post)

问题描述

为倡导城市低碳生活,市文明办计划举办马拉松比赛,为确保比赛安全,沿途设置了一些观察点。每个观察点派一个观察员驻守。由于天气比较炎热,需要在沿途安装一些饮水机,使得观察员可以去取水喝。由于观察员每移动一个单位的路程,需要耗费一个单位的体力。而每个观察员的体力有限,只能在他体力能支持的范围内去取水喝,要不他就会渴死或累死。

聪明的楠楠也参与了这次比赛的筹备工作。他的任务是设计一个理想的安装饮水机方案,使得安装的饮水机最少,但又保证所有观察员都能取到水喝。 输入格式:

输入数据有若干行。。

第一行,仅一个整数,表示有N(0

接下来有N行,每行两个整数S(0

输出最少要安装几台饮水机。 输入样例:

4

6 3 12 2 1 5 14 5 输出样例:

2

样例说明:他可以将饮水机安装在距离起点为6和12的位置上,这样所有的观察员都能喝到水。方案有多种,只需输出最少需要几台饮水机即可。

参考程序:(韩保红)

var n,i,j,m:integer;s,w:longint;a,b:array [1..1000] of longint; f:array [1..1000] of boolean; begin

assign(input,'post.in');reset(input);

第 1 页 共 2 页

NHOI2014小学甲组题

assign(output,'post.out');rewrite(output); readln(n); for i:=1 to n do begin

readln(s,w); a[i]:=s-w;b[i]:=s+w; end;

for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin

s:=a[j];a[j]:=a[i];a[i]:=s; w:=b[j];b[j]:=b[i];b[i]:=w; end;

for i:=1 to n do if not f[i] then begin

s:=a[i];w:=b[i]; for j:=i+1 to n do if w>=a[j] then begin

f[j]:=true;

if a[j]>s then s:=a[j]; if b[j]

writeln(m);

close(input);close(output); end.

第 2 页 共 2 页

本文来源:https://www.bwwdw.com/article/vzb.html

Top