博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hihocoder 1299 打折机票 线段树
阅读量:5174 次
发布时间:2019-06-13

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

题目链接:

code:

//线段树#include 
#include
#include
#include
#define maxn 100005using namespace std;int price[maxn];int Max[maxn];int segTree[4*maxn];int maxtime;void built(int node,int begin,int end){ if(begin == end){ segTree[node] = price[begin]; } else{ built(node*2,begin,(begin+end)/2); built(node*2+1,(begin+end)/2+1,end); segTree[node] = max(segTree[node*2],segTree[node*2 + 1]); }}int query(int node,int begin,int end,int left,int right){ int p1, p2; if (left > end || right < begin) return -1; if (begin >= left && end <= right) return segTree[node]; p1 = query(2 * node, begin, (begin + end) / 2, left, right); p2 = query(2 * node + 1, (begin + end) / 2 + 1, end, left, right); if (p1 == -1) return p2; if (p2 == -1) return p1; if (p1 >= p2) return p1; return p2;}int main(){ int n,m; memset(price,0,sizeof(price)); memset(Max,0,sizeof(Max)); maxtime = 0; cin >> n >> m; for(int i = 0;i < n;i ++) { int t,p; cin >> t >> p; price[t] = max(price[t],p); maxtime = max(maxtime,t); } built(1,1,maxtime); while(m --) { int a,b; cin >> a >> b; int ans = query(1,1,maxtime,a,b); if(ans == 0) cout << "None" << endl; else cout << ans << endl; } return 0;}

 

转载于:https://www.cnblogs.com/zhangjialu2015/p/5499345.html

你可能感兴趣的文章
oracle函数 MAX([distinct|all]x)
查看>>
LINUX对于未安装的软件包的查看
查看>>
判断iOS设备是否越狱
查看>>
团队博客
查看>>
hdoj--1010<dfs+奇偶剪枝>
查看>>
在Android中如何获取视频的第一帧图片并显示在一个ImageView中
查看>>
深入理解CNI
查看>>
Pie(二分法)
查看>>
为单元测试等非WebBase的项目伪造一个HttpContext , Session 和HttpHeader
查看>>
算法设计之最长公共子序列(LCS)问题
查看>>
javascript面向对象之Javascript 继承
查看>>
常用的Oracle数据库语句 (待更新完毕)
查看>>
[转] TreeList 当前节点图标和背景色设置
查看>>
Python日期时间函数处理
查看>>
vs2008快捷键极其技巧
查看>>
使用PDFminer3k解析pdf为文字遇到:WARING:root:GBK-EUC-H
查看>>
C#.NET 大型企业信息化系统集成快速开发平台 4.1 版本 - 面向数据库SQL语句的应用开发二...
查看>>
从C,C++,JAVA和C#看String库的发展(一)----C语言和C++篇
查看>>
Bootstrap 4-alpha 初体验
查看>>
查看执行SQL效果,消耗资源的SQL查看命令
查看>>