卡n^2,用线段树降到nlogn

记录每个点上所覆盖线段的次小值,保证能有两条路径能走

 #include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<map>
using namespace std;
#define MOD 1000000007
const int INF=0x3f3f3f3f;
const double eps=1e-;
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define root 1,n,1
#define mid ((l+r)>>1)
typedef long long ll;
#define cl(a) memset(a,0,sizeof(a))
#define ts printf("*****\n");
const int N=;
int n,m,tt;
int a[N<<],b[N<<];
void pushdown(int rt)
{
//printf("pd:%d %d %d\n",a[rt],b[rt],rt);
if(b[rt]!=)
{
if(b[rt]>=a[rt<<]&&b[rt]<b[rt<<])
{
b[rt<<]=b[rt];
}
if(b[rt]<a[rt<<])
{
a[rt<<]=b[rt<<];
a[rt<<]=b[rt];
}
if(b[rt]>=a[rt<<|]&&b[rt]<b[rt<<|])
{
b[rt<<|]=b[rt];
}
if(b[rt]<a[rt<<|])
{
b[rt<<|]=a[rt<<|];
a[rt<<|]=b[rt];
}
b[rt]=;
}
/*if(rt==4)
{
printf("%d %d\n",a[rt<<1],b[rt<<1]);
}*/
if(a[rt]!=)
{
if(a[rt]>=a[rt<<]&&a[rt]<b[rt<<])
{
b[rt<<]=a[rt];
}
if(a[rt]<a[rt<<])
{
b[rt<<]=a[rt<<];
a[rt<<]=a[rt];
}
if(a[rt]>=a[rt<<|]&&a[rt]<b[rt<<|])
{
b[rt<<|]=a[rt];
}
if(a[rt]<a[rt<<|])
{
b[rt<<|]=a[rt<<|];
a[rt<<|]=a[rt];
}
a[rt]=;
}
//printf("%d %d ++%d++\n",a[rt<<1],b[rt<<1],rt<<1);
}
void build(int l,int r,int rt)
{
a[rt]=b[rt]=;
if(l==r)
{
a[rt]=b[rt]=l;
return;
}
build(lson);
build(rson);
}
void update(int L,int R,int val,int l,int r,int rt)
{
if(l>=L&&r<=R)
{
int x=val;
if(b[rt]>x&&x>a[rt])
{
b[rt]=x;
}
if(x<b[rt])
{
b[rt]=a[rt];
a[rt]=x;
}
return;
}
pushdown(rt);
if(L<=mid) update(L,R,val,lson);
if(R>mid) update(L,R,val,rson);
}
int query(int pos,int l,int r,int rt)
{
//printf("%d %d %d %d %d\n",a[rt],b[rt],l,r,rt);
if(l==r)
{
return b[rt];
}
pushdown(rt);
if(pos<=mid) return query(pos,lson);
else return query(pos,rson);
}
int main()
{
int i,j,k,ca=,q;
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
while(scanf("%d%d%d",&n,&m,&q)!=EOF)
{
int x,y;
build(root);
for(i=;i<m;i++)
{
scanf("%d%d",&y,&x);
update(x,y,x,root); //记录次小x
}
while(q--)
{
scanf("%d",&x);
printf("%d\n",x-query(x,root));
}
}
}

zoj 3888 线段树 ***的更多相关文章

  1. ZOJ 3279-Ants(线段树)

    传送门:zoj 3279 Ants Ants Time Limit: 2 Seconds      Memory Limit: 32768 KB echo is a curious and cleve ...

  2. Prime Query (ZOJ 3911 线段树)

    Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a sequen ...

  3. F - Count the Colors ZOJ - 1610 线段树染色(染区间映射)

    题意:给一段0-8000的线段染色 问最后 颜色x 有几段 题解:标准线段树  但是没有push_up  最后查询是单点按顺序查询每一个点 考虑过使用区间来维护不同的线段有多少种各色的线段  思路是 ...

  4. ZOJ 3911 线段树

    题意:有N个数字,M个操作,然后回答每个Q开头的询问 操作形式: A val pos:在pos位置上+val Q l r:询问l~r之间有多少个质数 R val l r:把l~r之间的数字替换成val ...

  5. HDU 1199 &amp;&amp; ZOJ 2301 线段树离散化

    一段长度未知的线段.一种操作:a b c ,表示区间[a,b]涂为颜色C,w代表白色,b代表黑色,问终于的最长连续白色段,输出起始位置和终止位置 离散化处理.和寻常的离散化不同,须要把点化成线段.左闭 ...

  6. zoj 2706 线段树

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1706 trick:关于正数和负数的整除问题,正数整除是自动向下取整的 ...

  7. ZOJ 3299 线段树 离散化

    本来是个很简单的题目,难住我的主要是这么几点 1.它所有的点都是坐标,不是实际的砖块,1,3指的是1-2 2-3的砖块...后来就是用1 代表1-2 ,2代表2-3.....,这样的话,每次读入的数据 ...

  8. 群赛 ZOJ3741(dp) ZOJ3911(线段树)

    zoj3741 简单dp.wa了两个小时,中间改了好多细节.后来还是不对,参考了别人的代码,发现一个致命问题,初始化的时候,不是每种状态都能直接达到的.初始化成-1. (题目有个小坑,0<=L& ...

  9. zoj 3888 Twelves Monkeys 二分+线段树维护次小值

    链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemCode=3888 Twelves Monkeys Time Limit: 5 ...

随机推荐

  1. scp和rsync限制传输速度

    1.scp 限速100KB/s scp -l 1000 test root@192.168.1.104 此时的传输速率就是1M/8=100KB左右 2.rsync 限速100KB/s rsync -a ...

  2. 【leetcode】Restore IP Addresses

    Restore IP Addresses Given a string containing only digits, restore it by returning all possible val ...

  3. sizeof进行结构体大小的判断

    typedef struct{    int a;    char b;}A_t;typedef struct{    int a;    char b;    char c;}B_t;typedef ...

  4. wxPython:事件

    事件──── 是每个 GUI 应用不可舍割的一部分,因为所有的 GUI 应用程序都是基于事件驱动的.从 GUI 程序启动开始,它就回应同户的不同类型的事件.除了用户,也有其它因素可以产生事件,例如:互 ...

  5. SQL Server 2005中的分区表

    记录笔记: 转自 猪八戒学做网站 SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表? SQL Server 2005中的分区表(二):如何添加.查询.修改 ...

  6. Linux下安装Flask开发框架

    Flask是开发pythonweb的一个轻量级框架,适合初学者使用,当有了熟练的web基础后,再继续学习高级框架的开发,Linux一般安装好之后都会有python开发环境,给开发带来方便,下面是Fla ...

  7. ffmpeg-20160731-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  8. nyoj20_吝啬的国度_DFS

    吝啬的国度 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来.现在,Tom在第S号城市, ...

  9. C# 对象操作

    //********************************************************************************* //************** ...

  10. php中文转换编码函数

    $filename= $list->filename; // 获取文件名字 if(preg_match("/[\x80-\xff]/",$filename)){ // 如果是 ...