青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

LCA&RMQ

LCA問題
 給定一棵有根樹T,對于任意兩個(gè)節(jié)點(diǎn)u,v,求出LCA(T,u,v)

 LCA的tarjan算法 (離線算法)
 //初始所有節(jié)點(diǎn)color為WHITE
 void LCA(u)
 {
  MAKE_SET(u);
  ancester[FIND_SET(u)]=u;
  for(u的每個(gè)兒子v)
  {
   LCA(v);
   UNION(u,v);
   ancester[FIND_SET(u)]=u;
  }
  color[u]=BLACK
  for(Q(u)中的所有元素)
  {
   if(color[v]==BLACK)
   printf("LCA(%d,%d)=%d\n",u,v,ancester[FIND_SET(v)]);
  }
 }


 MAKE_SET(u)表示建立一個(gè)只有u的集合,且u為集合的代表元
 FIND_SET(u)表示找出集合的代表元
 UNION(u,v) 表示合并u,v所在的集合


RMQ問題
 給定一個(gè)長度為n的數(shù)組n,回答詢問RMQ(A,i,j),即A[i..j]中元素最小的數(shù)的下標(biāo)


 將LCA問題轉(zhuǎn)化為RMQ問題

  1.DFS遍歷樹,記錄遍歷到的節(jié)點(diǎn)E[1..2n-1],
    并用R[i]表示E數(shù)組中第一個(gè)值為i的元素的下標(biāo)
  2.對于任意 R[u]<R[v] ,dfs中第一次訪問u到第一次訪問v的路徑是E[R[u]..R[v]]
    并且其中深度最小的節(jié)點(diǎn)一定是u,v的LCA
  3.令數(shù)組L[i]表示節(jié)點(diǎn)E[i]的深度,那么當(dāng)R[u]<R[v]時(shí),LCA(T,u,v)=RMQ(L,R[u],R[v]);
 轉(zhuǎn)換后的RMQ問題比較特殊,相鄰兩個(gè)元素的相差1或-1,這樣的問題成為+_1-RMQ


 一般RMQ的Spare Table(ST) 算法
  d[i,j]表示從i開始長度為2^j的區(qū)間的RMQ,
  則有遞推公式 d[i,j]=min(d[i][j-1],d[i+2^(j-1),j-1]),即用兩個(gè)相鄰的長度為2^(j-1)
  的區(qū)間來分形長度為2^j的區(qū)間    預(yù)處理時(shí)間復(fù)雜度為O(nlogn)

  詢問時(shí) 取k=log2(j-i+1)令A(yù)為從i開始的長度為2^k的塊的RMQ
          令B為到j(luò)結(jié)束的長度為2^k的塊的RMQ
   則RMQ(i,j)=min(A,B),
   即 k=log2(j-i+1),RMQ[i,j]=min(d[i,k],d[j-2^k+1,k])

 +_1-RMQ的O(n)-O(1)算法
  ………………………………


未完待續(xù)…………



////////
寫了個(gè)lca的代碼
不知道對不對
#include<stdio.h>
#include<string.h>
#include<math.h>
#define maxn 505
#define black 1
#define white 0
int father[maxn],ancester[maxn];
int color[maxn];
struct node
{
    int v,next;
} edge[maxn*maxn];
int p[maxn];
int n,e,m;
int root;
void add(int u,int v)
{
    edge[e].v=v;
    edge[e].next=p[u];
    p[u]=e++;
}
int find(int u)
{
    if (u==father[u]) return u;
    else 
 {
  father[u]=find(father[u]);
 }//路徑壓縮
    return father[u];
}
void union1(int u,int v)
{
    int tmp,tmp1;
    tmp=find(u);
    tmp1=find(v);
    father[tmp1]=tmp;
}
void lca(int u)
{
    int i,v,v1;
    father[u]=u;
    ancester[find(u)]=u;
    for(i=p[u]; i!=-1; i=edge[i].next)
    {
        v=edge[i].v;
        lca(v);
        union1(u,v);
        ancester[find(u)]=u;
    }
    /*for(i=p1[u]; i!=-1; i=edge1[i].next)
    {
        v1=edge1[i].v;
        if (color[v1]==black)
            printf("LCA(%d,%d)=%d\n",u,v1,ancester[find(v)]);
    }*/
    color[u]=black;
 for(i=1;i<=n;i++)
  if(i!=u)
 {
  if (color[i]==black)
  {
   printf("LCA(%d,%d)=%d\n",u,i,ancester[find(i)]);
  }
 }
}
int main()
{
    int a,b,i;
    scanf("%d%d",&n,&m);
    scanf("%d",&root);
    memset(p,-1,sizeof(p));
    e=0;
    for(i=1; i<=m; i++)
    {
        scanf("%d%d",&a,&b);
        add(a,b);
    }
    for(i=1; i<=n; i++) father[i]=i;
    memset(color,white,sizeof(color));
    lca(1);
    return 0;
}

posted on 2012-04-30 11:39 jh818012 閱讀(148) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿

文章檔案(85)

搜索

最新評論

  • 1.?re: poj1426
  • 我嚓,,輝哥,,居然搜到你的題解了
  • --season
  • 2.?re: poj3083
  • @王私江
    (8+i)&3 相當(dāng)于是 取余3的意思 因?yàn)?3 的 二進(jìn)制是 000011 和(8+i)
  • --游客
  • 3.?re: poj3414[未登錄]
  • @王私江
    0ms
  • --jh818012
  • 4.?re: poj3414
  • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
  • --王私江
  • 5.?re: poj1426
  • 評論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
  • --王私江
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产性色一区二区| 另类av一区二区| 亚洲男人的天堂在线aⅴ视频| 欧美一区二区三区精品电影| 欧美激情综合五月色丁香| 国产三区二区一区久久| 欧美在线播放| 欧美影院一区| 久久视频国产精品免费视频在线| 中国成人亚色综合网站| 欧美午夜一区二区三区免费大片| 亚洲精品免费在线| 亚洲国产一区二区三区a毛片| 欧美一区二区女人| 亚洲国产成人久久综合一区| 免播放器亚洲一区| 欧美日韩亚洲精品内裤| 欧美一级大片在线免费观看| 久久久国产精品一区二区中文| 一本色道久久综合亚洲精品不 | 国产精品亚洲成人| 欧美激情精品久久久久久久变态| 欧美成人综合| 久久久久国产精品一区| 欧美日韩免费在线观看| 激情久久五月| 欧美三级欧美一级| 欧美96在线丨欧| 国产日韩在线视频| 免费欧美日韩| 国产日韩欧美一区| 亚洲无人区一区| 午夜国产精品视频免费体验区| 久久影院亚洲| 欧美大秀在线观看| 影院欧美亚洲| 欧美1区2区3区| 国产精品成人国产乱一区 | 91久久精品美女| 麻豆精品视频| 欧美激情第8页| 亚洲精品在线视频| 久久免费观看视频| 亚洲电影自拍| 一区二区日本视频| 欧美一区二区三区在线看| 欧美日韩国产首页在线观看| 久久综合激情| 国产一区二区三区日韩欧美| 性欧美大战久久久久久久久| 久久精品国产欧美激情| 国产一区二区中文| 噜噜噜91成人网| 一本色道久久精品| 久久全国免费视频| 亚洲日本va午夜在线影院| 欧美日韩精品一区二区天天拍小说 | 欧美一级成年大片在线观看| 国产精品免费网站在线观看| 欧美一区二区三区精品| 亚洲高清不卡| 亚洲欧洲日韩女同| 国产精品影音先锋| 欧美激情欧美激情在线五月| 亚洲色诱最新| 一级成人国产| 欧美一区在线看| 亚洲第一成人在线| 久久国产精品99久久久久久老狼| 亚洲第一综合天堂另类专| 欧美视频在线免费| 欧美成人第一页| 久久综合色天天久久综合图片| 欧美成人免费全部| 亚洲欧美日韩一区在线观看| 亚洲精品免费观看| 免费人成网站在线观看欧美高清| 亚洲二区三区四区| 国产一区二区三区av电影| 国产精品久久久久免费a∨大胸| 欧美成人一区二区三区在线观看| 久久国产精品久久国产精品| 欧美一区二区三区在线| 亚洲欧美综合v| 久久精品亚洲乱码伦伦中文| 久久精品人人做人人综合| 久久一二三四| 欧美美女喷水视频| 国产精品久久97| 国产亚洲欧洲一区高清在线观看| 国产亚洲成人一区| 亚洲清纯自拍| 欧美一区三区三区高中清蜜桃 | 欧美激情网友自拍| 亚洲欧美中日韩| 久久综合影视| 国产精品v欧美精品∨日韩| 欧美日韩在线播放| 国产精品自拍在线| 女同一区二区| 韩国欧美一区| 欧美中文字幕视频在线观看| 日韩一区二区高清| 亚洲天堂偷拍| 99精品视频免费观看视频| 亚洲精品一区二区网址 | 久久夜色精品国产| 鲁大师影院一区二区三区| 欧美肥婆在线| 久久国产精品网站| 欧美日韩成人网| 久久综合给合久久狠狠狠97色69| 久久久99久久精品女同性| 亚洲综合日韩| 美女国内精品自产拍在线播放| 欧美精品久久99久久在免费线| 欧美性淫爽ww久久久久无| 国产精品亚洲不卡a| …久久精品99久久香蕉国产| 亚洲久久视频| 欧美在线观看你懂的| 欧美成人国产一区二区| 亚洲综合好骚| 欧美日韩亚洲国产精品| 亚洲国产一区在线观看| 久久久激情视频| 亚洲一区美女视频在线观看免费| 亚洲女同精品视频| 国产精品jvid在线观看蜜臀| 亚洲精品无人区| 亚洲国产精品t66y| 老牛国产精品一区的观看方式| 国产视频一区在线观看一区免费| 久久精品国产欧美激情| 久久尤物视频| 国产精品美女久久久| 日韩视频在线一区二区三区| 亚洲综合视频1区| 久久久久久久一区二区| 国产精品99久久久久久久久| 欧美日韩999| 欧美一级二级三级蜜桃| 久久成人一区| 国产精品s色| 久久久久久自在自线| 久久久久久综合| 一本久久综合亚洲鲁鲁五月天| 亚洲麻豆一区| 国产又爽又黄的激情精品视频| 亚洲欧美电影在线观看| 欧美午夜不卡| 午夜国产不卡在线观看视频| 日韩视频一区二区| 国内精品久久久久影院薰衣草| 欧美mv日韩mv国产网站app| 欧美日韩成人在线播放| 久久精品视频免费观看| 欧美国产精品日韩| 亚洲欧美影音先锋| 牛夜精品久久久久久久99黑人| 亚洲一区二区三区777| 亚洲一区日韩在线| 亚洲人成在线播放网站岛国| 91久久中文字幕| 韩国欧美一区| 欧美一级一区| 久久国产精品久久久久久电车| 欧美国产先锋| 欧美黑人多人双交| 在线日韩中文| 久久综合五月| 欧美成人精品三级在线观看| 国产日韩专区| 午夜精品视频一区| 久久久国产精品一区二区中文| 国产精品高精视频免费| 日韩图片一区| 亚洲影院色在线观看免费| 欧美精品一区二区精品网| 日韩手机在线导航| 欧美一区二区三区久久精品茉莉花| 久久精品视频在线播放| 亚洲一区激情| 久久综合狠狠综合久久综合88| 亚洲天堂av图片| 99国产精品久久久久久久久久| 黄色免费成人| 久久国产精品久久久久久电车| 欧美日韩亚洲一区二区三区四区| 久久色在线播放| 91久久久亚洲精品| 欧美激情第9页| 久热国产精品| 中文精品一区二区三区| 欧美日韩一区二区三区免费看| 亚洲精品免费网站| 亚洲欧洲一区二区在线播放 | 国产日韩精品一区二区浪潮av| 久久精品日韩| 中文亚洲字幕|