当前位置: 代码迷 >> 综合 >> 【2012.03.09普及组】旅行 (Standard IO)
  详细解决方案

【2012.03.09普及组】旅行 (Standard IO)

热度:46   发布时间:2023-10-09 12:24:52.0

题目描述

你要进行一个行程为7000KM的旅行,现在沿途有些汽车旅馆,为了安全起见,每天晚上都不开车,住在汽车旅馆,你手里现在已经有一个旅馆列表,用离起点的距离来标识,如下:

0, 990, 1010, 1970, 2030, 2940, 3060, 3930, 4060, 4970, 5030, 5990, 6010, 7000

但在出发之前可能还要增加一些旅馆。

现在旅行社为了节约成本要求每天至少行驶A公里,国家旅行社为了安全起见要求每天最多只能行驶B公里。

你想知道一共有多少种旅行方案。

 

题解:

   把旅馆记录后排序,搜索。~~


代码:


vara:array[1..40] of longint;n,m,l,ans:longint;
procedure init;
vari,j,t:longint;
beginfillchar(a,sizeof(a),$7f);a[1]:=0;a[2]:=990;a[3]:=1010;a[4]:=1970;a[5]:=2030;a[6]:=2940;a[7]:=3060;a[8]:=3930;a[9]:=4060;a[10]:=4970;a[11]:=5030;a[12]:=5990;a[13]:=6010;a[14]:=7000;readln(n);readln(m);readln(l);for i:=1 to l doreadln(a[i+14]);l:=l+14;for i:=1 to l-1 dofor j:=i+1 to l doif a[i]>a[j] thenbegin t:=a[i];a[i]:=a[j];a[j]:=t;end;
end;
procedure dfs(x:longint);
vari:longint;
beginif x=l thenbegininc(ans);exit;end;for i:=x+1 to l dobeginif (a[x]+n<=a[i])and(a[x]+m>=a[i]) thendfs(i);if a[x]+m<a[i] then exit;end;
end;
vari:longint;
begininit;dfs(1);writeln(ans);
end.

  相关解决方案