HDU6012:Lotus and Horticulture(扫描线)(前缀和)
传送门
题意
给出n种植物的适宜培育温度区间[l,r],低于下限获值c,高于上限获值b,其他获值a
分析
首先考虑应该尝试选择哪些点:区间的左右端点、与区间左右端点距离0.50.5的点,这样就一定可以包括所有情况。 为了方便处理与区间左右端点距离0.50的点,只要将所有坐标扩大一倍,然后这些点就变成了“与区间左右端点距离1的点”了 考虑选出这些点后如何进行统计。显然先要将可以选的位置进行离散。假如我们选择的温度一开始是负无穷,这时答案是所有的c之和,考虑选择的温度不断升高,答案会如何变化。
当达到一个区间的左端点,则加上a-c,当超过一个区间的右端点,加上a-b,每次更新最大值
代码
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <bitset>
using namespace std;
#define ll long long
int t,n,l,r,a,b,c;
struct node
{
    int loc,value;
    bool operator<(const node &p)const
    {
        return loc<p.loc;
    }
}N[100100];
int main()
{
    for(scanf("%d",&t);t--;)
    {
        scanf("%d",&n);
        ll ans=0,ret=0;int cnt=0;
        for(int i=1;i<=n;++i)
        {
            scanf("%d%d%d%d%d",&l,&r,&a,&b,&c);
            ret+=c;
            N[++cnt]={l*2,a-c};N[++cnt]={r*2+1,b-a};
        }
        ans=ret;
        sort(N+1,N+1+cnt);int i;
        //printf("ret=%lld\n",ret);
        //for(int i=1;i<=cnt;++i) printf("N[%d].loc=%d N[%d].value=%d\n",i,N[i].loc,i,N[i].value);
        for(i=1;i<=cnt;)
        {
          ret+=N[i].value;i++;
          //printf("ret=%lld N[%d].value=%d\n",ret,i,N[i].value);
          while(N[i].loc==N[i-1].loc) ret+=N[i].value,i++;
          //printf("ret=%lld N[%d].value=%d\n",ret,i,N[i].value);
          ans=max(ans,ret);
          //printf("ret=%lld\n",ret);
        }
        printf("%lld\n",ans);
    }
}
HDU6012:Lotus and Horticulture(扫描线)(前缀和)的更多相关文章
- Lotus and Horticulture
		Lotus and Horticulture Accepts: 91 Submissions: 641 Time Limit: 4000/2000 MS (Java/Others) Memory Li ... 
- HDU 6012 Lotus and Horticulture(离散化)
		题目代号:HDU 6012 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012 Lotus and Horticulture Time Limit: ... 
- BestCoder Round #91 1002 Lotus and Horticulture
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012 题意: 这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望. Lotus ... 
- 【HDU】6012 Lotus and Horticulture (BC#91 T2)
		[算法]离散化 [题解] 答案一定存在于区间的左右端点.与区间左右端点距离0.5的点上 于是把所有坐标扩大一倍,排序(即离散化). 让某个点的前缀和表示该点的答案. 初始sum=∑c[i] 在l[i] ... 
- hdu 6012 Lotus and Horticulture 打标记
		http://acm.hdu.edu.cn/showproblem.php?pid=6012 我们希望能够快速算出,对于每一个温度,都能够算出它在这n颗植物中,能得到多少价值. 那么,对于第i科植物, ... 
- OI 刷题记录——每周更新
		每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ... 
- Lotus开发性能优化
		之前也总结过一篇关于性能的文章,地址在http://www.cnblogs.com/carysun/archive/2008/08/09/BasicPerformance.html,今天又看到DW上又 ... 
- [BZOJ 1218] [HNOI2003] 激光炸弹 【n logn 做法 - 扫描线 + 线段树】
		题目链接:BZOJ - 1218 题目分析 可以覆盖一个边长为 R 的正方形,但是不能包括边界,所以等价于一个边长为 R - 1 的正方形. 坐标范围 <= 5000 ,直接 n^2 的二维前缀 ... 
- Codeforces 703D Mishka and Interesting sum(树状数组+扫描线)
		[题目链接] http://codeforces.com/contest/703/problem/D [题目大意] 给出一个数列以及m个询问,每个询问要求求出[L,R]区间内出现次数为偶数的数的异或和 ... 
随机推荐
- 《effective C++》:条款37——绝不重新定义继承而来的缺省参数值
			引子: 阿里的一道题: #include <IOSTREAM> using namespace std; class A{ public: ) { cout<<"a~ ... 
- poj 2480 Longge's problem [ 欧拉函数 ]
			传送门 Longge's problem Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7327 Accepted: 2 ... 
- transient 关键字
			java语言的关键字,变量修饰符,如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.换句话来说就是,用transient关键字标记的成员变量不参与序列化过程. 作用 Jav ... 
- Fractal---POJ2083(dfs)
			http://poj.org/problem?id=2083 一道我认为有点恶心的dfs 刚开始没有初始化 用G++交 一直TLE 后来用了C++竟然是wa 那这肯定是我的问题了 ... 
- ArcGIS Engine 中的绘制与编辑
			1.线段绘制 基本步骤 构建形状 1. 创建 IPoint IPoint m_Point = new PointClass(); m_Point.PutCoords(x, y); 2. 创建 IPoi ... 
- Linux下的lds链接脚本简介(一)
			转载自:http://linux.chinaunix.net/techdoc/beginner/2009/08/12/1129972.shtml 一. 概论 每一个链接过程都由链接脚本(linker ... 
- Android Studio 经常使用手冊
			经常使用小操作 单词选择 显示近期操作 改动的文件 文件查找 操作记录 移动行 查找方法调用处 方法的跟进 显示方法的參数 行的高速操作 多行操作 高速补全完毕 代码提示 变量的高速操作 代码折叠 预 ... 
- centos 5.11修改ssh默认端口号
			查看下服务器端口号范围: # sysctl -a|grep ip_local_port_range net.ipv4.ip_local_port_range = 32768 61000 新 ... 
- USB多重系統 - 開機碟工具 – WinSetupFromUSB
			WinSetupFromUSB下載與安裝 讓USB磁碟擁有多重開機的功能,WinSetupFromUSB有著提軟體和硬體的高相容性. [官方網頁]:http://www.winsetupfromusb ... 
- VS2015 android 设计器不能可视化问题解决。
			近期安装了VS2015,体验了一下android 的开发,按模板创建执行了个,试下效果非常不错.也能够可视化设计.但昨天再次打开或创建一个android程序后,设计界面直接不能显示,显示错误:(可能是 ... 
