HDU-5935-Car
2017-10-17 13:44
267 查看
ACM模版
问题的核心也就是给每一段合理的分配时限,使时间花费最小。
那么我们可以逆向贪心模拟,最好一段肯定是一秒花费,根据这个速度来往前推,速度不严格递减,但是要保证每段时间是整数,所以速度可以是小数,那么为了避免精度丢失,我们可以采用分数形式来表示。一直推到起点位置,累计时间即可。
描述
题解
车子从起始位置 0 开始到达终点一共有 N 个位置被标记,每个位置被标记的时间都是整数时间,并且车子速度在每段儿都可以理解为匀速运动,不过整体趋势是不递减的。问,车子最短时间达到终点的时间花费。问题的核心也就是给每一段合理的分配时限,使时间花费最小。
那么我们可以逆向贪心模拟,最好一段肯定是一秒花费,根据这个速度来往前推,速度不严格递减,但是要保证每段时间是整数,所以速度可以是小数,那么为了避免精度丢失,我们可以采用分数形式来表示。一直推到起点位置,累计时间即可。
代码
#include <cstdio> #include <algorithm> #include <cmath> using namespace std; typedef long long ll; const int MAXN = 1e5 + 10; int N; ll a[MAXN]; int main() { int T; scanf("%d", &T); for (int case_ = 1; case_ <= T; case_++) { scanf("%d", &N); a[0] = 0; for (int i = 1; i <= N; i++) { scanf("%lld", a + i); } ll ans = 1, p = a - a[N - 1], q = 1; ll dis, tmp; for (int i = N - 1; i >= 1; i--) { dis = a[i] - a[i - 1]; q *= dis; swap(p, q); tmp = ceil(1.0 * p / q); ans += tmp; p = dis; q = tmp; } printf("Case #%d: %lld\n", case_, ans); } return 0; }
相关文章推荐
- HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
- hdu 5935 Car
- HDU 5935 Car (模拟)
- HDU 5935 Car(模拟+精度)
- HDU 5935 && 2016CCPC杭州 C: Car
- HDU 5935 Car 贪心 倒推 分数
- hdu 5935 Car【贪心】
- HDU 5935 Car (贪心)——2016年中国大学生程序设计竞赛(杭州)
- 【2016-CCPC-C】二分,动脑筋(Car,hdu 5935)
- hdu 5935 Car
- HDU 5935 - Car(贪心)
- 2016ccpc杭州赛 hdu 5935 C.Car
- HDU 5935 Car(思维,模拟,精度)
- HDU-5935-Car(杭州CCPC C题)-数学推导+水贪心
- HDU 5935 Car 贪心
- HDU 5935 - Car(贪心)
- hdu 5935 Car
- HDU 5935 Car 【模拟】 (2016年中国大学生程序设计竞赛(杭州))
- HDU 5935 Car
- hdu 1309 Loansome Car Buyer