zoukankan      html  css  js  c++  java
  • 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 }

        

  • 相关阅读:
    linux基础——虚拟机的创建及安装操作系统
    并发编程之多进程
    操作系统与进程(理论知识点)
    粘包
    socket-网络编程
    网络编程1
    网络编程
    异常
    元类
    反射与内置方法
  • 原文地址:https://www.cnblogs.com/windysai/p/3969511.html
Copyright © 2011-2022 走看看