题目1 : 打折机票(hihoCoder挑战赛20)
来源:互联网 发布:java连接redis 编辑:程序博客网 时间:2024/04/30 10:08
题目1 : 打折机票
时间限制: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"。
区间最值问题 线段树 RMQ 都行
默认的GCC提交真恶心啊 就做了两道题CE两次
#include <stdio.h>#include <string.h>#include <math.h>#include <algorithm>using namespace std;int a[100000+5];int max_num[100000+5][20];void RMQ(int n) { for(int i=1;i<20;i++) { for(int j=1;j<=n;j++) { if(j+(1<<i)-1<=n) { max_num[j][i]=max(max_num[j][i-1],max_num[j+(1<<(i-1))][i-1]); } } } } int main(){int n,m;while(~scanf("%d %d",&n,&m)){memset(a,0,sizeof(a));memset(max_num,0,sizeof(max_num));int Max=0;for(int i=0;i<n;i++){int t,v;scanf("%d %d",&t,&v);if(a[t]<v)a[t]=v,max_num[t][0]=v;if(t>Max)Max=t;}RMQ(Max);for(int i=0;i<m;i++){int c,d;scanf("%d %d",&c,&d);int pos=(int)(log(d-c+1.0)/log(2.0)); int max1=max(max_num[c][pos],max_num[d-(1<<pos)+1][pos]);if(max1) printf("%d\n",max1); else printf("None\n");}}return 0; }
2 0
- 题目1 : 打折机票(hihocoder 20挑战赛)
- 题目1 : 打折机票(hihoCoder挑战赛20)
- hihoCoder 挑战赛20 打折机票(线段树/RMQ)
- hihocoder #1299 : 打折机票 线段树
- hihoCoder挑战赛14 题目1 : 不等式
- hihoCoder挑战赛14 题目1 : 不等式 枚举?
- Wikioi 天梯 机票打折(2235)
- 题目2 : 展胜地的鲤鱼旗 (hihoCoder挑战赛20)
- hihoCoder挑战赛20 (区间最值)
- hihoCoder挑战赛20
- hihoCoder挑战赛20 题解
- hihocoder挑战赛20小记
- WikiOI 2235 机票打折
- wikioi p2235 机票打折
- CODEVS 2235 机票打折
- WIKIOI--2235机票打折
- 2235 机票打折
- hihocode #1299 打折机票
- uva10635(LCS转换为求LIS)
- js数组去重
- Android6.0-蓝牙权限问题
- 碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞
- RedHat设置SSH免密码登录
- 题目1 : 打折机票(hihoCoder挑战赛20)
- Metal 着色语言编程指南 十五
- hihoCoder挑战赛20解题报告
- 杭电3152
- 目标检测(Object Detection)
- Qt 学习笔记2 摘自《Qt 学习之路 2》
- 怎么让adb shell直接进入root?
- 杂记
- [算法]判断一个链表是否有环