A. Cheap Travel
题意:你要坐n站地铁,a卢布可以坐1站,b卢布可以坐m站。问最省的坐法花多少钱。
思路:贪心。超过m站的,先比较性价比,优先坐性价比高的。然后剩下不够m站的,比较是一站一站买票好,还是直接花b的钱坐到底好。
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <memory.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <ctype.h>
#define INF 1<<30
#define ll long long
#define max3(a,b,c) max(a,max(b,c))
using namespace std;
int main(){
int n,m,a,b;
while(cin>>n>>m>>a>>b){
if((b+0.0)/m<a+0.000001){
int tmp=n/m;
int tmp2;
if((n%m)==0){
tmp2=0;
}else{
tmp2=min(b,a*(n-tmp*m));
}
cout<<tmp*b+tmp2<<endl;
}else{
cout<<n*a<<endl;
}
}
return 0;
}
本文讨论了如何使用贪心算法在给定价格下找到最经济的地铁出行方案。
1652

被折叠的 条评论
为什么被折叠?



