您的位置:首页 > 其它

hihocoder-1299 打折机票(线段树)

2016-05-08 12:02 253 查看
题目链接:

打折机票

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述



因为思念新宿的"小姐姐"们,岛娘计划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"。

样例输入
7 6
1 1
2 1
4 3
4 4
4 5
6 9
7 9
1 7
1 2
6 7
3 3
4 4
5 5

样例输出
9
1
9
None
5
None

题意:

思路:

线段树找区间最大值;

AC代码


#include <bits/stdc++.h>
using namespace std;
#define Riep(n) for(int i=1;i<=n;i++)
#define Riop(n) for(int i=0;i<n;i++)
#define Rjep(n) for(int j=1;j<=n;j++)
#define Rjop(n) for(int j=0;j<n;j++)
#define mst(ss,b) memset(ss,b,sizeof(ss));
typedef long long LL;
const LL mod=1e9+7;
const double PI=acos(-1.0);
const int inf=0x3f3f3f3f;
const int N=1e5+5;
int n,m;
struct Node
{
int l,r,ans;
}tree[4*N];
void build(int node,int L,int R)
{
tree[node].l=L;
tree[node].r=R;
tree[node].ans=0;
if(L>=R)return ;
int mid=(L+R)>>1;
build(2*node,L,mid);
build(2*node+1,mid+1,R);
}
void update(int node,int pos,int num)
{
if(tree[node].l==tree[node].r&&tree[node].r==pos)
{
tree[node].ans=max(tree[node].ans,num);
return ;
}
int mid=(tree[node].l+tree[node].r)>>1;
if(pos<=mid)update(2*node,pos,num);
else update(2*node+1,pos,num);
tree[node].ans=max(tree[2*node].ans,tree[2*node+1].ans);
}
int query(int node,int L,int R)
{
if(L<=tree[node].l&&R>=tree[node].r)
{
return tree[node].ans;
}
int mid=(tree[node].l+tree[node].r)>>1;
if(R<=mid)return query(2*node,L,R);
else if(L>mid)return query(2*node+1,L,R);
else return max(query(2*node,L,mid),query(2*node+1,mid+1,R));
}
int main()
{
while(scanf("%d%d",&n,&m)!=EOF)
{
int x,y;
build(1,1,N-2);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
update(1,x,y);
}
while(m--)
{
scanf("%d%d",&x,&y);
int temp=query(1,x,y);
if(!temp)printf("None\n");
else printf("%d\n",temp);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: