题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012

题意:

这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望。
Lotus将所有的nn株盆栽都放在新建的温室里,所以所有盆栽都处于完全相同的环境中。
每一株盆栽都有一个最佳生长温度区间[l,r][l,r],在这个范围的温度下生长会生长得最好,但是不一定会提供最佳的研究价值(Lotus认为研究发育不良的盆栽也是很有研究价值的)。
Lotus进行了若干次试验,发现若第ii株盆栽的生长温度适宜,可以提供a_ia​i​​的研究价值;若生长温度超过了适宜温度的上限,能提供b_ib​i​​的研究价值;若生长温度低于适宜温度的下限,则能提供c_ic​i​​的研究价值。
现在通过试验,Lotus已经得知了每一株盆栽的适宜生长温度范围,也知道了它们的aa、bb、cc的值。你需要根据这些信息,给温室选定一个温度(这个温度可以是任意实数),使得Lotus能获得的研究价值最大。

分析:

刚开始这么多温度,很自然的想到二分,但是,这个温度又可以是实数,不是很好处理。

其实可以发现,对于一个区间,只要处理好区间左边0.5,右边0.5,区间端点就可以概括所有情况了。

于是,由于实数温度不好处理,可以将区间*2,左边0.5,就是-1.

然后温度是很大的数据的,从最低温开始查是不合理的,于是将温度离散化。

从最低温开始,价值就是c之和。每对于一个植物的温度,端点值加a-c,右边的值减 b-a,

那么某一个温度的价值和,就是维护的数组的前缀和。

#include <bits/stdc++.h>
#define ll long long
using namespace std; int T,n;
int L[],R[];
ll a[],b[],c[];
int cnt,t[];
ll sum[]; int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
cnt = ; memset(sum,,sizeof(sum)); for(int i=; i<=n; i++) {
scanf("%d%d%I64d%I64d%I64d",&L[i],&R[i],&a[i],&b[i],&c[i]);
L[i] *=;
R[i] *=;
} for(int i=; i<=n; i++)
{
t[++cnt]=L[i]-;
t[++cnt]=L[i];
t[++cnt]=L[i]+;
t[++cnt]=R[i]-;
t[++cnt]=R[i];
t[++cnt]=R[i]+;
} sort(t+,t+cnt+); cnt = unique(t+,t+cnt+)-t-; //待查的温度个数 //温度离散化
for(int i=; i<=n; i++)
{
L[i] = lower_bound(t+,t+cnt+,L[i]) - t;
R[i] = lower_bound(t+,t+cnt+,R[i]) - t;
} for(int i=; i<=n; i++)
{
sum[] +=c[i]; //最低温
sum[L[i]] +=a[i]-c[i];
sum[R[i]+] +=b[i]-a[i];
} for(int i=; i<=cnt+; i++)
sum[i] += sum[i-]; ll ans = ;
for(int i=; i<=cnt+; i++)
ans = max(ans,sum[i]);
cout<<ans<<endl; } return ;
}

BestCoder Round #91 1002 Lotus and Horticulture的更多相关文章

  1. BestCoder Round #91 1001 Lotus and Characters

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6011 题意: Lotus有nn种字母,给出每种字母的价值以及每种字母的个数限制,她想构造一个任意长度的 ...

  2. 暴力+降复杂度 BestCoder Round #39 1002 Mutiple

    题目传送门 /* 设一个b[]来保存每一个a[]的质因数的id,从后往前每一次更新质因数的id, 若没有,默认加0,nlogn复杂度: 我用暴力竟然水过去了:) */ #include <cst ...

  3. 矩阵快速幂---BestCoder Round#8 1002

    当要求递推数列的第n项且n很大时,怎么快速求得第n项呢?可以用矩阵快速幂来加速计算.我们可以用矩阵来表示数列递推公式比如fibonacci数列 可以表示为 [f(n)   f(n-1)] = [f(n ...

  4. 贪心/二分查找 BestCoder Round #43 1002 pog loves szh II

    题目传送门 /* 贪心/二分查找:首先对ai%=p,然后sort,这样的话就有序能使用二分查找.贪心的思想是每次找到一个aj使得和为p-1(如果有的话) 当然有可能两个数和超过p,那么an的值最优,每 ...

  5. Manacher BestCoder Round #49 ($) 1002 Three Palindromes

    题目传送门 /* Manacher:该算法能求最长回文串,思路时依据回文半径p数组找到第一个和第三个会文串,然后暴力枚举判断是否存在中间的回文串 另外,在原字符串没啥用时可以直接覆盖,省去一个数组空间 ...

  6. 二分图判定+点染色/并查集 BestCoder Round #48 ($) 1002 wyh2000 and pupil

    题目传送门 /* 二分图判定+点染色:因为有很多联通块,要对所有点二分图匹配,若不能,存在点是无法分配的,no 每一次二分图匹配时,将点多的集合加大最后第一个集合去 注意:n <= 1,no,两 ...

  7. hdu 5195 DZY Loves Topological Sorting BestCoder Round #35 1002 [ 拓扑排序 + 优先队列 || 线段树 ]

    传送门 DZY Loves Topological Sorting Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131 ...

  8. BestCoder Round #56 1002 Clarke and problem 1003 Clarke and puzzle (dp,二维bit或线段树)

    今天第二次做BC,不习惯hdu的oj,CE过2次... 1002 Clarke and problem 和Codeforces Round #319 (Div. 2) B Modulo Sum思路差不 ...

  9. BestCoder Round #92 1002 Count the Sheep —— 枚举+技巧

    题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=748&pid=1002 题解: 做题的时候只是想到 ...

随机推荐

  1. Mock Server利器 - Moco

    Moco介绍Moco独立运行所需环境如何运行Moco启动http服务启动https服务Moco HTTPs API配置如何在配置文件添加注释约定请求Body约定接口的uri约定请求参数约定请求方法约定 ...

  2. Java发送http请求(get 与post方法请求)

    转载:https://www.cnblogs.com/zzw1994/p/5140538.html

  3. vue(6)生态

    来自:https://www.jianshu.com/p/22a99426b524?utm_campaign=maleskine&utm_content=note&utm_medium ...

  4. oracle数据库的备份与还原

    转自:https://www.cnblogs.com/ylldbk/p/5613365.html 数据导出: 1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daoc ...

  5. HTTP的请求头标签 If-Modified-Since

    一直以来没有留意过HTTP请求头的IMS(If-Modified-Since)标签. 最近在分析Squid的access.log日志文件时,发现了一个现象.就是即使是对同一个文件进行HTTP请求,第一 ...

  6. JobService 7.0 定时任务不生效

    代码 // 构建JobInfo对象,传递给JobSchedulerService JobInfo.Builder builder = new JobInfo.Builder(JOB_ID,new Co ...

  7. C# List(T).Reverse 方法 顺序反转

    using System; using System.Collections.Generic; public class Example { public static void Main() { L ...

  8. 自定义Qt组件-通讯模块(P2)

    1.  抽象协议AbstractProtocol 抽象协议AbstractProtocol定义CommManager与协议之间的接口.AbstractProtocol中的一些属性(如enabled)用 ...

  9. 纯CSS控制背景图片100%自适应填充布局

    https://blog.csdn.net/wd4java/article/details/50537562 解决:   html,body{height: 100%;width: 100%;marg ...

  10. oracle用分隔符分割字段,并转为多行

    作用:当判断是否满足条件,而条件字段又是用","分割的时候. 如果数据库中一个字段插入数据,并且以","分割.有点像行转列 4804510101,4946645 ...