Lotus and Horticulture

Accepts: 91
Submissions: 641
Time Limit: 4000/2000 MS (Java/Others)
Memory Limit: 262144/262144 K (Java/Others)

这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望。
Lotus将所有的nnn株盆栽都放在新建的温室里,所以所有盆栽都处于完全相同的环境中。
每一株盆栽都有一个最佳生长温度区间[l,r][l,r][l,r],在这个范围的温度下生长会生长得最好,但是不一定会提供最佳的研究价值(Lotus认为研究发育不良的盆栽也是很有研究价值的)。
Lotus进行了若干次试验,发现若第iii株盆栽的生长温度适宜,可以提供aia_ia
思路:区间的左右端点、与区间左右端点距离0.50.50.5的点,这样就一定可以包括所有情况。 为了方便处理与区间左右端点距离0.50.50.5的点,只要将所有坐标扩大一倍,然后这些点就变成了“与区间左右端点距离111的点”了 考虑选出这些点后如何进行统计
​i​​的研究价值;,然后线段树维护一下就可以了,也可用前缀,复杂度n×log(n);
  1 #include<bits/stdc++.h>
2 using namespace std;
3 typedef long long LL;
4 LL tree[150006*8];
5 set<int>vec;
6 set<int>::iterator it;
7 typedef struct node
8 {
9 int a,b,c;
10 int l,r;
11 } ss;
12 ss mess[50005];
13 int ak[50005*8];
14 int ac[50005*8];
15 int er(int l,int r,int k);
16 void in(int l,int r,int k,int nn,int mm,LL c);
17 void ff(int l,int r,int k);
18 int read_p,read_ca;
19 inline int read(){
20 read_p=0;read_ca=getchar();
21 while(read_ca<'0'||read_ca>'9') read_ca=getchar();
22 while(read_ca>='0'&&read_ca<='9') read_p=read_p*10+read_ca-48,read_ca=getchar();
23 return read_p;
24 }
25 int main(void)
26 {
27 int T;
28 scanf("%d",&T);
29 while(T--)
30 {
31 memset(tree,0,sizeof(tree));
32 int n,cs = 0;
33 n = read();
34 for(int i = 0; i < n; i++)
35 {
36 scanf("%d %d %d %d %d",&mess[i].l,&mess[i].r,&mess[i].a,&mess[i].b,&mess[i].c);
37 ak[cs++] = mess[i].l*2;
38 ak[cs++] = mess[i].r*2;
39 ak[cs++] = mess[i].r*2+1;
40 }
41 int cn = 1;
42 sort(ak,ak+cs);
43 ac[0] = ak[0];
44 for(int i = 1; i < cs ; i++)
45 {
46 if(ak[i]!=ac[cn-1])
47 { ac[cn] = ak[i];
48 cn++;
49 }
50 }
51 for(int i = 0;i < n;i++)
52 {
53 mess[i].l = er(1,cn-1,mess[i].l*2);
54 mess[i].r = er(1,cn-1,mess[i].r*2);
55 }
56 for(int i = 0; i < n; i++)
57 {
58 in(0,mess[i].l-1,0,0,cn,mess[i].c);
59 in(mess[i].l,mess[i].r,0,0,cn,mess[i].a);
60 in(mess[i].r+1,cn-1,0,0,cn,mess[i].b);
61 }
62 ff(0,cn,0);
63 LL maxx = 0;
64 for(int i = 0; i < 150006*8; i++)
65 {
66 maxx = max(maxx,tree[i]);
67
68 }
69 printf("%lld\n",maxx);
70 }
71 return 0;
72 }
73 int er(int l,int r,int k)
74 {
75 int mid = (l+r)/2;
76 if(k == ac[mid])
77 return mid;
78 else if(k < ac[mid])
79 return er(l,mid-1,k);
80 else return er(mid+1,r,k);
81 }
82 void in(int l,int r,int k,int nn,int mm,LL c)
83 {
84 if(l > r)return ;
85 if(l > mm||r < nn)
86 return ;
87 else if(l <= nn&&r >= mm)
88 {
89 tree[k]+=c;
90 return ;
91 }
92 else
93 {
94 in(l,r,2*k+1,nn,(nn+mm)/2,c);
95 in(l,r,2*k+2,(nn+mm)/2+1,mm,c);
96 }
97 }
98 void ff(int l,int r,int k)
99 {
100 if(l == r)
101 return ;
102 else
103 {
104 tree[2*k+1] += tree[k];
105 tree[2*k+2] += tree[k];
106 tree[k] = 0;
107 ff(l,(l+r)/2,2*k+1);
108 ff((l+r)/2+1,r,2*k+2);
109 }
110 }



aaa、bbb、ccc的值。你需要根据这些信息,给温室选定一个温度(这个温度可以是任意实数),使得Lotus能获得的研究价值最大。

Lotus and Horticulture的更多相关文章

  1. HDU 6012 Lotus and Horticulture(离散化)

    题目代号:HDU 6012 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012 Lotus and Horticulture Time Limit: ...

  2. BestCoder Round #91 1002 Lotus and Horticulture

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6012 题意: 这几天Lotus对培养盆栽很感兴趣,于是她想搭建一个温室来满足她的研究欲望. Lotus ...

  3. 【HDU】6012 Lotus and Horticulture (BC#91 T2)

    [算法]离散化 [题解] 答案一定存在于区间的左右端点.与区间左右端点距离0.5的点上 于是把所有坐标扩大一倍,排序(即离散化). 让某个点的前缀和表示该点的答案. 初始sum=∑c[i] 在l[i] ...

  4. HDU6012:Lotus and Horticulture(扫描线)(前缀和)

    传送门 题意 给出n种植物的适宜培育温度区间[l,r],低于下限获值c,高于上限获值b,其他获值a 分析 首先考虑应该尝试选择哪些点:区间的左右端点.与区间左右端点距离0.50.5的点,这样就一定可以 ...

  5. hdu 6012 Lotus and Horticulture 打标记

    http://acm.hdu.edu.cn/showproblem.php?pid=6012 我们希望能够快速算出,对于每一个温度,都能够算出它在这n颗植物中,能得到多少价值. 那么,对于第i科植物, ...

  6. OI 刷题记录——每周更新

    每周日更新 2016.05.29 UVa中国麻将(Chinese Mahjong,Uva 11210) UVa新汉诺塔问题(A Different Task,Uva 10795) NOIP2012同余 ...

  7. Lotus开发之Lotus Notes中域的验证

    一:介绍       Lotus中的域主要有以下的类型:文本,日期/时间,对话框列表,复选框,单选按钮,RTF等等.Lotus中域的验证方式有很多种公式,lotusscript,javascript等 ...

  8. 使用LotusScript操作Lotus Notes RTF域

    Lotus Notes RTF域的功能也非常强大,除了支持普通的文本以外,还支持图片.表格.嵌入对象.Http 链接.Notes 链接.附件等等众多的类型.本文将介绍如何使用这些类来灵活操作富文本域. ...

  9. Lotus开发性能优化

    之前也总结过一篇关于性能的文章,地址在http://www.cnblogs.com/carysun/archive/2008/08/09/BasicPerformance.html,今天又看到DW上又 ...

随机推荐

  1. Linux关机/重启/用户切换/注销

    目录 1. 关机/重启命令 2. 用户切换/注销 2.1 基本说明 2.2 切换用户 2.3 注销用户 1. 关机/重启命令 # shutdown命令 shutdown -h now # 立即关机 s ...

  2. EXCEL-批量下拉填充

    3.批量下拉填充  =>    全选->Ctrl+G定位空值->随意找一个空白单元格输入=还有此单元格想要填充的内容->按Ctrl+Enter,等待几秒,即可,批量下拉填充:

  3. EXCEL-排名前三名显示小红旗,后三名显示小黑旗

    总结(用的WPS):第一步:用=IF(RANK(数值,引用范围) <=3,"小红旗",IF(RANK(数值,引用,1) <=3,"小黑旗",&quo ...

  4. 用C语言的LED实验,有汇编哦!

    C语言LED实验 1.汇编激活CPU 首先要明白对于没有系统开发板(也就是裸机)来说,是没办法直接对C进行识别.所以需要一段汇编语言,来配置CPU的资源,选择CPU运行模式,初始化指针位置. 代码如下 ...

  5. C语言中的指针与整数相加的值计算

    以下分三种情况: 1. 指针 + 整数值 2. 整数 + 整数  3. 指针强制转换为另一个类型后(指针或者是整数)  +  整数 测试例子: 1 struct AAA{ int a; char b[ ...

  6. 日常Java 2021/9/26 (二柱升级版)

    package m; import java.util.Scanner;import java.util.Random; public class di_er { static int number= ...

  7. 看动画学算法之:二叉搜索树BST

    目录 简介 BST的基本性质 BST的构建 BST的搜索 BST的插入 BST的删除 简介 树是类似于链表的数据结构,和链表的线性结构不同的是,树是具有层次结构的非线性的数据结构. 树是由很多个节点组 ...

  8. android TabLayout设置选项卡之间的距离无效已解决

    根据下面的链接设置完距离后无法生效 https://www.jb51.net/article/131304.htm layout <com.google.android.material.tab ...

  9. Linux基础命令---get获取ftp文件

    get 使用lftp登录ftp服务器之后,可以使用get指令从服务器获取文件.   1.语法       get [-E]  [-a]  [-c] [-O base]  rfile  [-o lfil ...

  10. Spring(2):依赖注入DI

    依赖注入DI 当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例.但在Spring里,创建被 ...