zoukankan      html  css  js  c++  java
  • Codeforces Round #436 (Div. 2) C. Bus

    http://codeforces.com/contest/864/problem/C

    题意:

    坐标轴上有x = 0和 x = a两点,汽车从0到a之后掉头返回,从a到0之后又掉头驶向a。。。从0到a或者从a到0叫做一次旅行。汽车的油箱的容量为b,行驶1单位长度消耗的油量为1单位,在x = f处有一个加油站,可以把油加满。

    现在,汽车位于x = 0处,将要进行k次旅行,开始汽车的油箱是满的,问至少要加多少次油才能走完全程,或者不可能时输出“-1”。

    思路:

    可以把汽车的旅行看成是一直向前的,那么旅途中就有k个加油站,我们首先保证能够走到第一个加油站,之后根据贪心原则,走不到下一个加油站就在当前加油站加油,加了油之后都走不到的话,那就永远没有办法走到了。。。

    最后再判断一下是否可以走完最后一个加油站到终点的路程即可。

    代码:

     1 #include <stdio.h>
     2 
     3 int main()
     4 {
     5     long long a,b,f,k;
     6 
     7     scanf("%lld%lld%lld%lld",&a,&b,&f,&k);
     8 
     9     long long now = b;
    10 
    11     long long ans = 0;
    12 
    13     if (now < f) printf("-1
    ");
    14     else
    15     {
    16         now -= f;
    17         for (int i = 1;i < k;i++)
    18         {
    19             long long d = (i & 1) ? (a - f) : f;
    20 
    21             d <<= 1;
    22 
    23             if (d > now) ans++,now = b;
    24             if (d > now)
    25             {
    26                 printf("-1
    ");
    27                 return 0;
    28             }
    29 
    30             now -= d;
    31         }
    32 
    33         long long d = (k & 1) ? a - f : f;
    34 
    35         if (d > now) ans++,now = b;
    36         if (d > now) printf("-1
    ");
    37         else printf("%d
    ",ans);
    38     }
    39 
    40     return 0;
    41 }
  • 相关阅读:
    zjnu1725 COCI (类似二维树状数组模拟)
    zjnu1730 PIRAMIDA(字符串,模拟)
    hdu5365Shortest Path (floyd)
    表达式的转换 (模拟题)
    zjnu1709 UZASTOPNI (bitset,树形dp)
    zjnu1707 TOPOVI (map+模拟)
    zjnu1716 NEKAMELEONI (线段树)
    zjnuSAVEZ (字符串hash)
    codeforces 55D. Beautiful numbers (数位dp)
    TP5将入口文件放在Public中,能得到那些安全保障?
  • 原文地址:https://www.cnblogs.com/kickit/p/7595211.html
Copyright © 2011-2022 走看看