pku 1167[枚举+回溯]

题目连接:     http://acm.pku.edu.cn/JudgeOnline/problem?id=1167

题目大意:

一男子于12:00来到一个公交车站,他记录下了12:00-12:59所有公交车的到站情况。现在我们假设:
    1) 同一条线路的公交车到站是有规律的,也就是每隔一个固定时间就会有一辆车到站。
    2) 公交车的到站是以分钟为最小计量单位的。
    3) 每一条线路的车至少到站两次。
    4) 经过该车站的公交车线路≤17条。
    5) 不同线路的公交车可以同时到达该车站。
    6) 不同线路的公交车到该车站的时刻和时间间隔均可以相同。

现在问,根据该男子的记录,最少有多少条公交车线路经过该车站?
由题意可以推出的结论:

first<ing;

ing<=59-first;

   =>0<=firist<=29;

frist+(time-1)*ing<=59;

frist+time*ing>59;

2<=ing<=59;

所以,59-frist<time*ing<=59+ing-first;=>time=1+(59-firist)/ing;

其中n是在0~59中,最多有几趟改线路的车经过。。。。。

在每一种first的取值的情况下,有相对应的多少种线路,枚举为:59+57+。。。。。。+1=(60)*30/2=900,种线路,这是首先必须预处理的,因为我们要处理出每一种线路的能在(0~59)经过该站的最多,那么经过次数最多且满足条件的情况下,肯定改线路是一定,次数越多能从剩余的数列中删去数越多,那么余下的线路也会尽可能的少。。

 

题词初看了很久,没有一点点想法,看了下官方的解报告,晕。。英文的解题报告还真是难看。。。。明白的大概的算法,然后到网上搜了一个人的解题报告看了一下,才有自己的想法。。。

官方和网上牛人的算法,他们提及的两个重点:一个是搜索的顺序和剪枝估价函数;我试了下放宽估价函数的限制,把>=改成>   TLE了。。。

官方的解题报告:http://olympiads.win.tue.nl/ioi/ioi94/contest/day2prb2/solution.html

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值