思路:对于每一个站,如果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("%I64dn",ans);
}
return 0;
}
最后
以上就是魁梧机器猫最近收集整理的关于Hot Days Codeforces Round #132 (Div. 2) D(贪心)的全部内容,更多相关Hot内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复