• codeforces 466A. Cheap Travel 解题报告


    题目链接:http://codeforces.com/problemset/problem/466/A

    题目意思:一个 ride 需要 a 卢布,m 个 ride 需要 b 卢布,这两种方案都可以无限制地采用,要完成 n rides 最少需要多少卢布。

        只要理清思路,一步一步做就不难了。

        首先 要知道 n 和 m 的大小关系是不确定的,有可能出现 n < m 情况。此时面临的选择是:一张 b 卢布 还是 n * a 卢布。

        如果 n >= m 要分情况讨论。

        由于我们希望用的卢布越少越好,那么首先算出如果用 b 卢布,就需要比较 a 和 b/m(每个ride需要多少卢布) 的大小关系,如果后者比较少,那么就希望用尽可能多的 b 卢布。最后如果有余数r,就看对于这个余数是采用 r*a 还是 b;如果 a < b/m,那么 n 个 rides 都用 a 卢布来达成。

       

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstdlib>
     4 #include <cstring>
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     int n, m, k;
    10     double a, b;
    11     while (scanf("%d%d%lf%lf", &n, &m, &a, &b) != EOF)
    12     {
    13         int ans;
    14         if (n < m)
    15             ans = (a*n > b ? b : a*n);
    16         else if (a >= b/m)
    17         {
    18             ans = n/m * b;
    19             int r = n - n/m * m;
    20             if (r)
    21                 ans += min(r*a, b);
    22         }
    23         else
    24             ans = n * a;
    25         printf("%d
    ", ans);
    26     }
    27     return 0;
    28 }

        

  • 相关阅读:
    沙盒配置好的测试
    云端存储的实现:云存储1
    演职人员名单MobileMenuList
    关于GitHub的朋友的NE Game
    到了冲刺阶段
    云存储的配置3
    刚才花了1$赞助了那位伙计
    我知道这对自己是个积累的过程,很好,我成长的很快
    煎熬过后终于有一刻释怀
    空白不曾停止。。。
  • 原文地址:https://www.cnblogs.com/windysai/p/3969511.html
Copyright © 2020-2023  润新知