Lotus and Horticulture
Lotus and Horticulture
这几天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的更多相关文章
- 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] ...
- HDU6012:Lotus and Horticulture(扫描线)(前缀和)
传送门 题意 给出n种植物的适宜培育温度区间[l,r],低于下限获值c,高于上限获值b,其他获值a 分析 首先考虑应该尝试选择哪些点:区间的左右端点.与区间左右端点距离0.50.5的点,这样就一定可以 ...
- 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开发之Lotus Notes中域的验证
一:介绍 Lotus中的域主要有以下的类型:文本,日期/时间,对话框列表,复选框,单选按钮,RTF等等.Lotus中域的验证方式有很多种公式,lotusscript,javascript等 ...
- 使用LotusScript操作Lotus Notes RTF域
Lotus Notes RTF域的功能也非常强大,除了支持普通的文本以外,还支持图片.表格.嵌入对象.Http 链接.Notes 链接.附件等等众多的类型.本文将介绍如何使用这些类来灵活操作富文本域. ...
- Lotus开发性能优化
之前也总结过一篇关于性能的文章,地址在http://www.cnblogs.com/carysun/archive/2008/08/09/BasicPerformance.html,今天又看到DW上又 ...
随机推荐
- lxml解析库的安装和使用
一.lxml的安装lxml是Python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高.本节中,我们了解一下lxml的安装方式,这主要从Windows.Linux ...
- Apache RocketMQ分布式消息传递和流数据平台及大厂面试宝典v4.9.2
概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache RocketMQ官网地址 https://rocketmq.apache.org/ Latest rel ...
- 3 - 简单了解一下springboot中的yml语法 和 使用yml赋值
1.简单了解yml语法 2.使用yml给实体类赋值 准备工作:导入依赖 <!-- 这个jar包就是为了实体类中使用@ConfigurationProperties(prefix = " ...
- day09 文件属性
day09 文件属性 昨日回顾 yum底层原理: 第一步:执行yum install nginx安装命令 第二步:yum去/etc/yum.repos.d这个目录中 第三步:根据/etc/yum/re ...
- Enumeration遍历http请求参数的一个例子
Enumeration<String> paraNames=request.getParameterNames(); for(Enumeration e=paraNames;e.hasMo ...
- 神器Tampermonkey的安装使用
Tampermonkey是一款基于浏览器的神奇插件,在国内称为油猴,开发者可以在上面开发满足自己需求的各类浏览器应用脚本.不过经过全球各地无数开发者数年的积累现在其官网已经有一大把的优秀的现成脚本,完 ...
- OceanBase 2.x体验:推荐用DBeaver工具连接数据库
Original MQ4096 [OceanBase技术闲谈](javascript:void(0) 2020-01-15 OceanBase 2.x体验:推荐用DBeaver工具连接数据库 Ocea ...
- elasticSearch索引库查询的相关方法
package com.hope.es;import org.elasticsearch.action.search.SearchResponse;import org.elasticsearch.c ...
- JSP页面的基本结构
一:一个JSP页面由以下基本元素组成. (1)HTML标签 (2)CSS (3)变量和方法 (4)Java代码段 (5)JSP动作和指令 (6)其他脚本元素(如Javascript) 二:JSP的基本 ...
- 【C/C++】链表
#include <bits/stdc++.h> using namespace std; struct node { int data; // 数据 node* next; // 指针 ...