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获取随机数
Python当中,可用random模块来获取随机数 import random """ random模块,用于获取随机数 """ print ...
- 编程艺术第十六~第二十章:全排列/跳台阶/奇偶调序,及一致性Hash算法
目录(?)[+] 第十六~第二十章:全排列,跳台阶,奇偶排序,第一个只出现一次等问题 作者:July.2011.10.16.出处:http://blog.csdn.net/v_JULY_v. 引言 ...
- 日常Java 2021/11/6
Java多线程编程 Java给多线程编程提供了内置的支持.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个钱程,每条线程并行执行不同的任务.多线程是多任务的一种特别的形式,但多线程使用 ...
- 2.使用Lucene开发自己的搜索引擎–indexer索引程序中基本类介绍
(1)Directory:Directory类描述了Lucene索引的存放位置,它是一个抽象,其子类负责具体制定索引的存储路径.FSDirectory.open方法来获取真实文件在文件系统中的存储路径 ...
- 试工具_ab
目录 一.简介 二.例子 三.参数 一.简介 ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的. 1.ab每次只能测试一个URL,适合做重复压力测 ...
- Linux下安装中文字体
目录 一.Centos系列 二.Ubuntu系列 一.Centos系列 1.安装字体库 yum -y install fontconfig 2.添加中文字体,建立存储中文字体的文件夹 mkdir /u ...
- MySQL——基础查询与条件查询
基础查询 /* 语法: select 查询列表 from 表名; 类似于:System.out.println(打印东西); 1.查询列表可以是:表中的字段.常量值.表达式.函数 2.查询的结果是一个 ...
- 学习笔记--html篇(1)
html学习--1 href学习 href="javascript:void(0)" 阻止页面跳转类似于javascript:#,url无变化(死链接,返回undefined) h ...
- typeScript基本概念
我一直认为学习是知识的累加,而前端技术也是进步的.所以学习的重点就是,'它有什么不同,它好在哪里'.这要求我们必须结合之前的经验和知识去学习一门新技术,而不是无情的复制粘贴机器. 首先,ts的官方定义 ...
- supermarket(uaf)!!!!
在这道题目我花费了很长的时间去理解,因为绕进了死圈子 例行检查我就不放了 关键处在于选择5 使用了realloc,却没有让结构体指针node-> description正确指回去 (11条消息) ...