Codeforces Round #132 (Div. 2) D. Hot Days_html/css_WEB-ITnose

php中文网
发布: 2016-06-24 11:54:57
原创
1412人浏览过

D. Hot Days

time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

the official capital and the cultural capital of berland are connected by a single road running through n regions. each region has a unique climate, so the i-th (1?≤?i?≤?n) region has a stable temperature of ti degrees in summer.

This summer a group of m schoolchildren wants to get from the official capital to the cultural capital to visit museums and sights. The trip organizers transport the children between the cities in buses, but sometimes it is very hot. Specifically, if the bus is driving through the i-th region and has k schoolchildren, then the temperature inside the bus is ti?+?k degrees.

Of course, nobody likes it when the bus is hot. So, when the bus drives through the i-th region, if it has more than Ti degrees inside, each of the schoolchild in the bus demands compensation for the uncomfortable conditions. The compensation is as large as xi rubles and it is charged in each region where the temperature in the bus exceeds the limit.

To save money, the organizers of the trip may arbitrarily add or remove extra buses in the beginning of the trip, and between regions (of course, they need at least one bus to pass any region). The organizers can also arbitrarily sort the children into buses, however, each of buses in the i-th region will cost the organizers costi rubles. Please note that sorting children into buses takes no money.

Your task is to find the minimum number of rubles, which the organizers will have to spend to transport all schoolchildren.

立即学习前端免费学习笔记(深入)”;

div+css3阶梯分页样式
div+css3阶梯分页样式

div+css3阶梯分页样式

div+css3阶梯分页样式 84
查看详情 div+css3阶梯分页样式

Input

The first input line contains two integers n and m (1?≤?n?≤?105; 1?≤?m?≤?106) ? the number of regions on the way and the number of schoolchildren in the group, correspondingly. Next n lines contain four integers each: the i-th line contains ti, Ti, xi and costi (1?≤?ti,?Ti,?xi,?costi?≤?106). The numbers in the lines are separated by single spaces.

Output

Print the only integer ? the minimum number of roubles the organizers will have to spend to transport all schoolchildren.

Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use cin, cout streams or the %I64dspecifier.

Sample test(s)

input

2 1030 35 1 10020 35 10 10
登录后复制

output

120
登录后复制

input

3 10010 30 1000 15 10 1000 310 40 1000 100000
登录后复制

output

200065
登录后复制

Note

In the first sample the organizers will use only one bus to travel through the first region. However, the temperature in the bus will equal30?+?10?=?40 degrees and each of 10 schoolchildren will ask for compensation. Only one bus will transport the group through the second region too, but the temperature inside won't exceed the limit. Overall, the organizers will spend 100?+?10?+?10?=?120 rubles.



题意:n个区域,m个孩子坐车穿过这些区域,每个区域的温度都不一样,t,T,x,cost分别表示该地区的温度t,车内最大温度限制T,车内温度若超过T对每个孩子的赔偿x,坐车的费用cost,求最小的费用。

思路:1. 当 m 最后的费用都为 : cost
2.m>(T-t) 时
有两种选择 一个是尽量做在一辆车上(对于补助费比较少时)
sum=m*x;
另一个是 尽量多做车,但是要保证车都坐满(刚好达到不要补助费的时候)。 
sum=cost*( m%(T-t)==0? m/(T-t)+1: m/(T-t) );

代码:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <map>#include <stack>#include <vector>#include <set>#include <queue>#pragma comment (linker,"/STACK:102400000,102400000")#define maxn 1005#define MAXN 2005#define mod 1000000009#define INF 0x3f3f3f3f#define pi acos(-1.0)#define eps 1e-6typedef long long ll;using namespace std;int main(){    __int64 n,m;    while (~scanf("%I64d%I64d",&n,&m))    {        __int64 t,T,x,c,ss1,ss2;        __int64 ans=0;        __int64 s1,s2;        for (__int64 i=0;i<n;i++)        {            s1=INF,s2;            scanf("%I64d%I64d%I64d%I64d",&t,&T,&x,&c);            if(T-t<=0)            {                ans+=m*x+c;                continue;            }            if (m<=T-t)            {                ans+=c;                continue;            }            ss1=c+m*x;            ss2=c*(m%(T-t)==0?m/(T-t):(m/(T-t)+1));            ans+=min(ss1,ss2);        }        printf("%I64d\n",ans);    }    return 0;}/*2 1030 35 1 10020 35 10 103 10010 30 1000 15 10 1000 310 40 1000 100000*/
登录后复制



HTML速学教程(入门课程)
HTML速学教程(入门课程)

HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号