标签:贪心
思路:对于每一个站,如果T<t 那么一辆车,如果t+m<=T,一辆车,如果t<T但是t+m>T;
那么就要考虑了
现在假设所有人在一辆车,价格为c+m*x;
如果有一部分人出去租车,发现用的钱少一点,那么那一辆车最好坐满,否者空出来的位置可以坐的人就在那个已经满的车内需要补偿,
如果一部分人出去发现划算,那么为什么在出去一部分呢?这样想来就只有两种情况了
1‘ 所有人在一辆车上
2 每个车都不超过温度T,但是都坐满了
好了,上代码了:
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define N 1000100 typedef __int64 ll; ll n,m,t,T,x,c; int main() { ll ans; while(~scanf("%I64d%I64d",&n,&m)) { ans=0; while(n--) { scanf("%I64d%I64d%I64d%I64d",&t,&T,&x,&c); if(T<=t) { ans+=x*m+c; continue; } if(t+m<=T) { ans+=c; continue; } ll temp=T-t; temp=m%temp? m/temp+1:m/temp; ans+=min(x*m+c,c*temp); } printf("%I64d\n",ans); } return 0; }
Hot Days Codeforces Round #132 (Div. 2) D(贪心)
标签:贪心
原文地址:http://blog.csdn.net/u014737310/article/details/40785721