hdu 4630 线段树+在线操作

hdu 4630

算是一道好题目吧,不断地求一段区间的最大公约数,‘|’表示有x这个约数,‘o’表示没有,

|ooo|oo|那么我们可以根据最后一个‘|’的位置来进行在线查询,将要查询的区间按右边界进行排序,更新‘|’的前一个位置。用线段树。。。。。。

//hdu 4630 线段树
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#define maxn 50002
using namespace std;
int num[maxn],pos[maxn],n,m,p[maxn];
vector g[maxn+5];
struct e1
{
    int x,y,id,ans;
}que[maxn];
struct e2
{
    int l,r,ma;
}tree[maxn*6];

bool cmp(e1 a,e1 b)
{
    if(a.y==b.y)
        return a.x

你可能感兴趣的:(数据结构—线段树)