zoukankan      html  css  js  c++  java
  • Hot Days Codeforces Round #132 (Div. 2) D(贪婪)

    Description

    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.

    Input

    The first input line contains two integers n and m(1 ≤ n ≤ 1051 ≤ 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 tiTixi 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 Input

    Input
    2 10
    30 35 1 100
    20 35 10 10
    
    Output
    120
    
    Input
    3 100
    10 30 1000 1
    5 10 1000 3
    10 40 1000 100000
    
    Output
    200065
    

    Hint

    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元。每一辆车的价格c,那个车内的温度为t加车内的人。对于每个站,你能够选择坐计量车,求花费最小?


    思路:对于每个站,假设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 ",ans); } return 0; }








    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    技术的那些事儿_2_产品与工艺
    for与foreach再探讨
    技术的那些事儿_3_西方技术管理的精髓
    搭建免费的.Net开发环境
    CDN
    servu 系统服务看门狗,自动脱机补丁,自动启动
    .NET Remoting程序开发入门篇
    网管必知远程终端3389端口合理修改秘藉
    反射方法调用时的一个错误:参数计数不匹配( parameter count mismatch )
    VPS性能测试第一步:CPU测试
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4628430.html
Copyright © 2011-2022 走看看