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上又 ...
随机推荐
- Python基础之基本运算符
目录 1. 算数运算符 2. 比较运算符 3. 赋值运算符 4. 逻辑运算符 5. 身份运算 6. 运算符优先级 1. 算数运算符 常用算术运算符使用方法如下: x = 5 y = 2 a = x + ...
- Linux—yum的python版本错误——初级解决方案
为了安装rrdtool,发现不是少这个就是少那个,最后发现yum也不能用. 从网上找的解决yum问题. 转自:http://doarthon.blog.51cto.com/3175384/728809 ...
- Typora数学公式输入指导手册
Markdown 公式指导手册 公式大全的链接 https://www.zybuluo.com/codeep/note/163962#mjx-eqn-eqsample 目录 Markdown 公式指导 ...
- DBeaver客户端工具连接Hive
目录 介绍 下载安装 相关配置 1.填写主机名 2.配置驱动 简单使用 主题设置 字体背景色 介绍 在hive命令行beeline中写一些很长的查询语句不是很方便,急需一个hive的客户端界面工具 D ...
- midi的一些概念,包括一些音乐的概念
参考:http://www.yueqixuexi.com/jita/20180918205363.html https://blog.csdn.net/meicheng777/article/deta ...
- 生成接口文档并同步到postman
前言 当我们开发需要测试接口时,会遇到以下几个问题 1.如果接口过多,参数过多,一个个参数复制到postman简直能要了我的狗命,重复劳动过多. 2.如果接口过多,参数过多,编写接口文档给测试人员或者 ...
- SqlSession与SqlSessionFactory到底是什么关系?
1. SqlSession和SqlSessionFactory的接口定义 SqlSession: public interface SqlSession extends Closeable { ...
- vim使用配置(转)
在终端下使用vim进行编辑时,默认情况下,编辑的界面上是没有行号的.语法高亮度显示.智能缩进等功能的. 为了更好的在vim下进行工作,需要手动配置一个配置文件: .vimrc 在启动vim时,当前用户 ...
- fastjson过滤多余字段
/** * Description:过滤实体中的字段 * @param src 需要过滤的对象,如 list,entity * @param clazz 实体的class ...
- 2.8 rust 枚举与模式匹配
Enums and Pattern Matching 摘要 枚举定义 enum IpAddrKind { V4, V6, } 枚举方法 fn main() { enum Message { Quit, ...