博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lotus and Horticulture
阅读量:5115 次
发布时间:2019-06-13

本文共 3448 字,大约阅读时间需要 11 分钟。

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
2 using namespace std; 3 typedef long long LL; 4 LL tree[150006*8]; 5 set
vec; 6 set
::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 else103 {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能获得的研究价值最大。

转载于:https://www.cnblogs.com/zzuli2sjy/p/6341558.html

你可能感兴趣的文章
split和join和pop和remove用法
查看>>
leetcode 之Rotate List(18)
查看>>
compress.go
查看>>
SAP HANA
查看>>
TC SRM683 Div1 250
查看>>
获取滚动条所在页面位置。做一个类似TX的消息框
查看>>
【ABAP系列】SAP ABAP中关于commit的一点解释
查看>>
从EF三层 到 DDD领域驱动设计(1)--------------数据操作
查看>>
axis 开发webservice
查看>>
51nod 1065 最小正子段和 (贪心)
查看>>
nginx负载均衡的5种策略
查看>>
MFCC/Filter Bank的提取流程
查看>>
局网满猿关不住,一波码农出墙来。
查看>>
ios开发学习--选项卡(Tab Bar) 效果源码分享--系列教程
查看>>
涉略spring
查看>>
CHM.BAT
查看>>
delphi脚本
查看>>
[转载]jQuery1.6.1源码分析系列
查看>>
MySql简介
查看>>
APP审核关于3.2.1金融资格的审核回复苹果
查看>>