A. Mind the Gap
传送门:http://codeforces.com/contest/967/problem/A
题目大意:
给定n个飞机着陆时间点,以及时间差s,并且起飞和着陆需要1分钟,即时间差为s+1。现在要插入一个飞机起飞的时间点,使得这n+1个时间点仍然保持两两之间相差s+1分钟。
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
B. Watering System
传送门:http://codeforces.com/contest/967/problem/B
题目大意:
一个水管有n个洞,洞的大小分别为s1,s2……sn。当倒入A升的水时,每个洞会流出(si*A)/S升的水,其中S为洞的大小之和。问最少封掉多少洞能够在第一个洞中流出至少B升的水。(显然第一个洞是不封的)
思路:
第一个洞流出的水是(s1*A)/S,其中只有S会发生变化,那么只要排个序从最大的开始封就好了。
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
C. Stairs and Elevators
传送门:http://codeforces.com/contest/967/problem/C
题目大意:
一幢n*m的大楼,有楼梯和电梯,分别分布在cl和ce条列上。楼梯每走一楼花费1个时间单元,电梯每走v楼花费1个时间单元,当然在同一个楼层里左右走一格也花费1个时间单元。问从(x1,y1)到(x2,y2)最快需要花费几个时间单元。
思路:
对于不在同一层的,楼梯和电梯分别都算一次然后求最小值。竖向的距离直接就是abs(y2-y1);横着的如果楼梯/电梯在x1和x2之间,则距离是abs(x2-x1),否则选取离x1最近的或离x2最近的楼梯/电梯,假设距离为d,则距离是abs(x2-x1)+2*d。
对于在同一层的,根本不用找楼梯或者电梯,直接走过去就可以了。
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include