codeforces 466A. Cheap Travel 解题报告
2024-10-20 06:32:37
题目链接: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 卢布来达成。
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std; int main()
{
int n, m, k;
double a, b;
while (scanf("%d%d%lf%lf", &n, &m, &a, &b) != EOF)
{
int ans;
if (n < m)
ans = (a*n > b ? b : a*n);
else if (a >= b/m)
{
ans = n/m * b;
int r = n - n/m * m;
if (r)
ans += min(r*a, b);
}
else
ans = n * a;
printf("%d\n", ans);
}
return ;
}
最新文章
- HDU2084基础DP数塔
- Buffer too small
- android style 中一些颜色的定义
- 10 Code Coverage Tools for C &; C++
- char[] 操作
- codeforces 613B B. Skills(枚举+二分+贪心)
- java笔记10之循环
- Git-多人协作
- [js高手之路]node js系列课程-创建简易web服务器与文件读写
- iOS Storyboard约束详解
- 初级 Java 的 3 本进阶书
- RabbitMQ 消息队列 入门 第二章(交换类型fanout)
- java-同步控制及不可变设置(只读访问)
- Web服务器原理
- Go如何正确的使用mysql driver
- 截取字符串substr和subString的却别
- 诡异的楼梯 HDU - 1180
- 直接将DataTable存入oracle数据库中(转)
- UNIX环境编程学习笔记(13)——文件I/O之标准I/O流
- JavaScript事件代理入门