zoukankan      html  css  js  c++  java
  • 区间损坏HDU4132 noj[1304] BJF: How Far Can Drive At Most 区间叠加 计算和 超级帅的题目

    每日一贴,今天的内容关键字为区间损坏

    • [1304] BJF: How Far Can Drive At Most

    • 间时制限: 1000 ms 内存制限: 65535 K
    • 题问描述
    • Now I am going to drive on a street. The street is a straight line. It will cost me one unit oil per meter. And my car can contain V units at most. Unfortunately some zones of the street have been damaged badly. The number of damaged zones is Q. One zone is represented as (l, r, C), means the zone between l to r is damaged, and it will cost me another C units of oil per peter. Please notice that zones may intersect. My question is how far can I drive at most.


    • 输入
    • Several cases(cases <= 10). The first line is the case number T. Then T cases follow. For each case : First line two integers l (indicating the length of the street) and V (indicating the amount of oil my car can contain at most when I start)(1 <= len, V <= 10 ^ 9). Second line of each case is an integer Q (0 <= Q <= 50000). Then Q lines follow, each with three integers (l, r, C), means the zone between l to r has been damaged and it will cost me another C units of oil per meter(1 <= l < r <= len, 1 <= C <= 100).
    • 出输
    • For each case, print the farthest I can drive, and output it with exactly two digits after the decimal point.
    • 样例输入
    • 2
      100 100
      2
      10 20 5
      10 30 14
      1000 10000
      3
      10 20 4
      10 30 14
      10 15 5
    • 样例出输
    • 14.50
      1000.00
    • 提示
    • 起源
    • 加多宝凉茶
        每日一道理
    人的生命似洪水奔流,不遇着岛屿和暗礁,难以激起美丽的浪花。

        http://acm.hdu.edu.cn/showproblem.php?pid=4132

        http://acm.nbut.cn:8081/Problem/view.xhtml?id=1304

        题意:

        有一条线直街道,因为有些区段有着不同水平的损坏,致使通过的车辆会消费不同的油量。在没损坏的路上行驶是每米消费 1 位单的油。

        当初给出街道的总长 l 和总油量 v ,以及给出 Q 组损坏区间的耗油量(每米)。如果区间有重叠,则耗油量应当累加算计。

        你须要算计出在这

        

        

        v

        

        

        位单的油量下,从原点发出最多行驶多少米

        

        

        路思:

        先拆分区间再对区间排序,个逐理处加断判

        详细看代码

    #include<stdio.h>
    #include<algorithm>
    using namespace std;
    struct NODE
    {
    	int pos;
    	int cost;
    	 bool operator < (const NODE &aa) const
         {
            return pos < aa.pos;
         }
    }a[2*50000+2];
    int n,len,cnt;
    double v;
    void solve()
    {
    	int i,j;
    	double cost=0;
    	i=0;
    	while(i<cnt)
    	{
    	    j=i;
    		while(j<cnt)
    		{
    			if(a[i].pos!=a[j].pos) break;
    			cost+=a[j].cost;
    			j++;
    		}
    		if(v-(a[j].pos-a[i].pos)*cost<=0)
    		{
                   printf("%.2lf\n",a[i].pos+v/cost);
    			   return ;
    		}
    		v=v-(a[j].pos-a[i].pos)*cost;
    		i=j;
    
    	}
    	printf("%.2lf\n",(double)a[cnt-1].pos);
    }
    int main()
    {
    	int cas;
          scanf("%d",&cas);
    	  while(cas--)
    	  {
    		  int left,right,c;
    		  cnt=0;
    		  scanf("%d %lf",&len,&v);
    		  scanf("%d",&n);
    		  int i;
    		  a[cnt].pos=0;
    		  a[cnt].cost=1;
    		  cnt++;
    		  for(i=0;i<n;i++)
    		  {
    			  scanf("%d %d %d",&left,&right,&c);
    			  a[cnt].pos=left;
    			  a[cnt].cost=c;
    			  cnt++;
    			  a[cnt].pos=right;
    			  a[cnt].cost=-c;
    			  cnt++;
    		  }
    		  a[cnt].pos=len;
    		  a[cnt].cost=-1;
    		  cnt++;
    		  sort(a,a+cnt);
    		 // for(i=0;i<cnt;i++)
    		//	  printf("%d\n",a[i].pos);
    		  solve();
    	  }
    	  return 0;
    }

        

        

    文章结束给大家分享下程序员的一些笑话语录: 腾讯总舵主马化腾,有人曾经戏称如果在Z国选举总统,马化腾一定当选,因为只要QQ来一个弹窗”投马总,送Q币”即可。

  • 相关阅读:
    STM32F401+nRF24L01无线传输音频(对讲机原型)
    Keil MDK STM32系列(五) 使用STM32CubeMX创建项目基础结构
    Keil MDK STM32系列(四) 基于抽象外设库HAL的STM32F401开发
    Keil MDK STM32系列(三) 基于标准外设库SPL的STM32F407开发
    PlatformIO下的STM32F4xx项目配置
    nRF24L01基于FIFO TX队列的发送性能优化
    个人发展计划IDP 与Smart原则
    IDEA Maven 项目默认编译项目为JDK 1.5
    投资 学习 成长 判断力 面对挫折
    投资 价值 道德 长期主义(5,10,20年)三观
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3063651.html
Copyright © 2011-2022 走看看