线段树之应用 ---- #1299 : 打折机票
来源:互联网 发布:邮政小包软件 编辑:程序博客网 时间:2024/04/30 10:42
#1299 : 打折机票
时间限制:10000ms
单点时限:1000ms
内存限制:256MB
- 样例输入
7 61 12 14 34 44 56 97 91 71 26 73 34 45 5
- 样例输出
919None5None
描述
因为思念新宿的"小姐姐"们,岛娘计划6月份再去一趟东京,不过这次看来她需要自掏腰包。经过了几天的夜战,岛娘终于在体力耗尽之前,用Python抓下了所有6月份,上海至东京的全部共 n 张机票。现在请你帮助债台高筑的岛娘筛选出符合时间区间要求的,最贵的机票。
输入
输入数据的第一行包含两个整数 n, m(1 ≤ n, m ≤ 105),分别表示机票的总数,和询问的总数。接下来的 n 行,每行两个整数 t, v (1 ≤ t, v ≤ 105),表示每张机票出发的时间和价格。 接下来的 m 行,每行两个整数 a, b (1 ≤ a ≤ b ≤ 105),表示每个询问所要求的时间区间。
输出
对于每组询问,输出一行表示最贵的价格。如果没有符合要求的机票,输出一行"None"。
#define _CRT_SECURE_NO_WARNINGS#include<cstdio> #include<cstring>const int N = 100000;struct tree{int left, right;int maxn;}s[4 * N]; //一般长度为N的区间,所需节点个数不超过四倍int a[N];inline int Max(int a, int b) {return a > b ? a : b;}void build(int l, int r, int p){s[p].left = l;s[p].right = r;if (l == r){s[p].maxn = a[l]; //在长度为0的节点处设置maxnreturn;}int mid = (l + r) / 2;build(l, mid, p << 1); //左孩子build(mid + 1, r, p << 1 | 0X01); //右孩子s[p].maxn = Max(s[p << 1].maxn, s[p << 1 | 0x01].maxn);}int search(int l, int r, int p){if (l <= s[p].left && s[p].right <= r) //如果查询区间包含当前区间{return s[p].maxn;}int mid = (s[p].left + s[p].right) / 2;if (l > mid) //全在右区间return search(l, r, p << 1 | 1);else if (r <= mid) //全在左区间return search(l, r, p << 1);elsereturn Max(search(l, mid, p << 1), search(mid + 1, r, p << 1 | 0x01));}int main(){int n, m;scanf("%d%d", &n, &m);memset(a, 0, sizeof(a));int t, v;for (int i = 0; i<n; i++){scanf("%d%d", &t, &v);a[t] = Max(a[t], v);}build(1, 100000, 1); //创建线段树int l, r;for (int i = 0; i<m; i++){scanf("%d%d", &l, &r);int ans = search(l, r, 1);if (!ans)printf("None\n");elseprintf("%d\n", ans);}return 0;}
0 0
- 线段树之应用 ---- #1299 : 打折机票
- hihocoder #1299 : 打折机票 线段树
- hihoCoder1299 打折机票(线段树)
- hihocode #1299 打折机票
- hihoCoder 挑战赛20 打折机票(线段树/RMQ)
- HIHO Coder - 1299 打折机票
- WikiOI 2235 机票打折
- wikioi p2235 机票打折
- CODEVS 2235 机票打折
- WIKIOI--2235机票打折
- 2235 机票打折
- 2235 机票打折
- 【天梯 - Wikioi】2235 机票打折
- code[vs] 2235 机票打折
- Wikioi 天梯 机票打折(2235)
- 题目1 : 打折机票(hihocoder 20挑战赛)
- 购物、机票、酒店、打折信息网站开发完成beekle.com
- 题目1 : 打折机票(hihoCoder挑战赛20)
- XMG CADisplayLink
- 常用Linux命令集合
- '_fileno' was not declared in this scope
- 剑指offer面试题(一)
- microstation level2 0402_2
- 线段树之应用 ---- #1299 : 打折机票
- PHP 根据IP地址获取所在城市
- 剑指Offer--039-平衡二叉树(判断一棵二叉树是否是平衡二叉树)[扩展附加题]
- StringBuffer的用法
- Glib学习(0) 第一课 g_printf的helloworld
- 如何使用 ATK-SIM900A 模块进行中英文的短信发送
- MVC、MVP和MVVM
- 线程同步归纳总结
- c++操作符new 与delete学习(2)