zoukankan      html  css  js  c++  java
  • [HDOJ5935]Car(精度,数学)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5935

    题意:有个老司机在开车, 开车过程中车的速度是不减的. 交警记录了这个老司机在nn个时间点的位置, 但是时间位置. 已知老司机从位置0出发, 记录的时间点都是整数, 问经过第nn个位置最少需要的时间.

    题解:通过最后一段路程的时间肯定为 1 秒,只需由速度不降原则倒推出每一段所通过的最小整数时间即可。

    原来卡了精度,好坑呀。。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int maxn = 100100;
     5 const double eps = 1e-9;
     6 int n, a[maxn];
     7 
     8 int main() {
     9     // freopen("in", "r", stdin);
    10     int T, _ = 1;
    11     scanf("%d", &T);
    12     while(T--) {
    13         printf("Case #%d: ", _++);
    14         scanf("%d", &n);
    15         for(int i = 1; i <= n; i++) {
    16             scanf("%d", &a[i]);
    17         }
    18         int ret = 1;
    19         double v = a[n] - a[n-1];
    20         for(int i = n-1; i >= 1; i--) {
    21             int x = a[i] - a[i-1];
    22             if(x <= v + eps) {
    23                 v = x;
    24                 ret++;
    25             }
    26             else {
    27                 double t = (double(x - eps) / v);
    28                 ret += int(t + 1);
    29                 v = (double(x) / int(t + 1));
    30             }
    31         }
    32         cout << ret << endl;
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    Chrome
    给Xshell增加快速命令集
    Integer对象大小比较问题
    maven的mirror和repository加载顺序
    maven的settings.xml详解
    OAuth2.0 RFC 6749 中文
    Linux下netstat命令简单操作
    Linux里的几种不同的压缩命令小记
    [ASIS 2019]Unicorn shop
    Metasploit魔鬼训练营第一章作业
  • 原文地址:https://www.cnblogs.com/kirai/p/6033224.html
Copyright © 2011-2022 走看看