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

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數據加載中……

POJ 2374 Fence Obstacle Course 線段樹+動態規劃

思路:

用線段樹維護所有線段的分布。
新增加一個fence的時候,將fence的范圍[a, b]插入線段樹,節點的值為fence的編號,即高度。
那么fence上的某一點就是樹的葉子了,從葉子往上一直到根節點的路徑中節點的最大值,
就是從fence上的這一點垂直掉下去后,碰到的一個fence了。

這樣,我們就可以在O(lgN)時間內知道,從一個fence的端點掉下去會碰到哪個fence了。
不然從后往前一個個找就是O(N)復雜度了。同時N也很大,必然超時。

同時也可以發現,一個fence保存兩個值用作動態規劃就好了,向左、右走之后,掉到其他fence上面,然后回到基地所用的最短路徑。
推的方法很簡單,掉到其他fence上面之后,看下是向左走距離短還是向右走距離短。就行了。

這個代碼跑到400ms。

#include <stdio.h>

#define MAX_N 50032
#define MAX_R 100032 

struct {
    
int a, b;
}
 dp[MAX_N], fences[MAX_N];
int N, S, tree[MAX_R*16];

__inline 
int max(int a, int b)
{
    
return a > b ? a : b;
}


__inline 
int abs(int a)
{
    
return a > 0 ? a : -a;
}


__inline 
int min(int a, int b)
{
    
return a < b ? a : b;
}


void insert(int idx, int start, int end, int left, int right, int val)
{
    
int mid;

    
if (start == left && right == end) {
        tree[idx] 
= val;
        
return ;
    }

    mid 
= (start + end) / 2;
    
if (right <= mid) 
        insert(idx
*2, start, mid, left, right, val);
    
else if (left > mid)
        insert(idx
*2+1, mid + 1, end, left, right, val);
    
else {
        insert(idx
*2, start, mid, left, mid, val);
        insert(idx
*2+1, mid + 1, end, mid + 1, right, val);
    }

}


int query(int idx, int start, int end, int pos)
{
    
int val, mid;

    
if (start == pos && end == pos) 
        
return tree[idx];
    mid 
= (start + end) / 2;
    
if (pos <= mid)
        val 
= query(idx*2, start, mid, pos);
    
else
        val 
= query(idx*2+1, mid + 1, end, pos);
    
return max(val, tree[idx]);
}


__inline 
int calc_min(int i, int pos)
{
    
if (!i)
        
return abs(pos - MAX_R);
    
return min(pos - fences[i].a + dp[i].a, fences[i].b - pos + dp[i].b);
}


int main()
{
    
int i;

    freopen(
"e:\\test\\in.txt""r", stdin);

    scanf(
"%d%d"&N, &S);
    S 
+= MAX_R;
    
for (i = 1; i <= N; i++{
        scanf(
"%d%d"&fences[i].a, &fences[i].b);
        fences[i].a 
+= MAX_R;
        fences[i].b 
+= MAX_R;
        dp[i].a 
= calc_min(query(10, MAX_R*2, fences[i].a), fences[i].a);
        dp[i].b 
= calc_min(query(10, MAX_R*2, fences[i].b), fences[i].b);
        insert(
10, MAX_R*2, fences[i].a, fences[i].b, i);
    }

    printf(    
"%d\n"
            min(S 
- fences[N].a + dp[N].a, fences[N].b - S + dp[N].b)
            );

    
return 0;
}

posted on 2010-03-08 18:21 糯米 閱讀(1384) 評論(2)  編輯 收藏 引用 所屬分類: POJ

評論

# re: POJ 2374 Fence Obstacle Course 線段樹+動態規劃  回復  更多評論   

知道為什么要用線段樹,我直接開辟一個數組,每次將第i個fense的區間標記為i,好像也能得到正確的結果,可是會運行超時,不知道為什么?
#include "stdafx.h"
#include <stdio.h>

#define MAX_N 50032
#define MAX_R 100032

struct {
int a, b;
} dp[MAX_N], fences[MAX_N];
int N, S;

int seg[MAX_R*2];

__inline int max(int a, int b)
{
return a > b ? a : b;
}

__inline int abs(int a)
{
return a > 0 ? a : -a;
}

__inline int min(int a, int b)
{
return a < b ? a : b;
}

__inline int calc_min(int i, int pos)
{
if (!i)
return abs(pos - MAX_R);
return min(pos - fences[i].a + dp[i].a, fences[i].b - pos + dp[i].b);
}


int main()
{
//for(int k=0;k<MAX_R*2;++k)
//{
// seg[k] = 0;
//}

int i;

freopen("e:\\test\\in.txt", "r", stdin);

scanf("%d%d", &N, &S);
S += MAX_R;
for (i = 1; i <= N; i++) {
scanf("%d%d", &fences[i].a, &fences[i].b);
fences[i].a += MAX_R;
fences[i].b += MAX_R;
dp[i].a = calc_min( seg[ fences[i].a ], fences[i].a);
dp[i].b = calc_min( seg[ fences[i].b ], fences[i].b);

for (int j=fences[i].a;j<=fences[i].b;++j)
{
seg[j] = i;
}

}
printf( "%d\n",
min(S - fences[N].a + dp[N].a, fences[N].b - S + dp[N].b)
);

return 0;
}
2012-01-29 01:28 | CWQBUPT

# re: POJ 2374 Fence Obstacle Course 線段樹+動態規劃  回復  更多評論   

@CWQBUPT
因為你缺少了二分的過程,線段樹查找O(logn),而你的查找O(n)
2016-05-07 21:20 | hez2010
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲免费小视频| 欧美成人四级电影| 久久精品一区蜜桃臀影院 | 欧美在线综合视频| 欧美一区成人| 亚洲激情电影在线| 亚洲激情视频在线观看| 欧美阿v一级看视频| 在线观看不卡| 亚洲激情在线激情| 一本色道久久综合亚洲精品不| 亚洲最新视频在线播放| 亚洲午夜av电影| 日韩视频二区| 亚洲在线1234| 久久精品视频免费| 欧美成人久久| 亚洲国产精品传媒在线观看| 国产精品红桃| 国产欧美一区二区精品秋霞影院 | 激情综合网激情| 伊人久久久大香线蕉综合直播| 久久国产精品久久久久久| 免费高清在线视频一区·| 亚洲电影免费观看高清完整版在线| 宅男精品导航| 欧美中文字幕精品| 欧美精品18+| 国产精品免费一区二区三区在线观看 | 午夜精品免费在线| 午夜亚洲影视| 午夜精品一区二区在线观看| 久久夜色精品国产| 亚洲国产成人在线播放| 欧美亚洲综合在线| 美日韩精品免费观看视频| 亚洲一区二区三区四区视频| 国产美女精品视频| 亚洲黄色有码视频| 久久久久久电影| 正在播放亚洲| 欧美激情按摩在线| 狠狠色综合色综合网络| 国产欧美日韩免费看aⅴ视频| 久久久噜噜噜久久人人看| 一区二区高清在线| 久久久久www| 国产精品视频成人| 亚洲精品一区二区在线| 狠狠入ady亚洲精品| 国产精品白丝av嫩草影院| 久久久91精品国产| 欧美成人按摩| 亚洲国产成人精品久久| 在线观看欧美一区| 亚洲欧美日韩国产中文| 亚洲一区成人| 亚洲欧洲精品一区二区三区| 亚洲国产精品成人| 久久久久亚洲综合| 国产一区二区三区丝袜| 国产精品稀缺呦系列在线| 性欧美xxxx视频在线观看| 欧美国产一区视频在线观看| 久久久综合网站| 亚洲综合色丁香婷婷六月图片| 亚洲曰本av电影| 亚洲精品视频免费观看| 欧美不卡视频一区| 午夜视频一区二区| 国产精品嫩草久久久久| 国产精品免费视频xxxx| 国产模特精品视频久久久久| 欧美性猛交一区二区三区精品| 欧美精品在线观看播放| 欧美日韩mv| 一本久久精品一区二区| 亚洲一区在线免费观看| 亚洲宅男天堂在线观看无病毒| 99re6热只有精品免费观看| 亚洲高清自拍| 免费短视频成人日韩| 日韩亚洲精品在线| 欧美日韩成人在线播放| 国产精品视频久久久| 国产欧美一区二区三区久久| 国产女主播一区二区| 国产综合自拍| 欧美成人一区二区三区| 99国产欧美久久久精品| 亚洲在线一区二区三区| 欧美在线综合| 亚洲国产专区校园欧美| 亚洲影音一区| 欧美亚洲一级| 亚洲久久在线| 亚洲综合丁香| 91久久综合| 亚洲午夜激情网页| 在线欧美视频| 亚洲午夜精品久久久久久app| 久久久水蜜桃av免费网站| 1769国产精品| 亚洲第一福利在线观看| 一区二区电影免费在线观看| 欧美一二三视频| 久热国产精品| 久久精品国产精品亚洲精品| 亚洲激情第一页| 国产精品欧美精品| 亚洲大胆人体视频| 国产精品日韩精品欧美精品| 亚洲日本va午夜在线电影| 亚洲欧美伊人| 免费亚洲一区二区| 久久精品成人一区二区三区蜜臀 | 久久综合影音| 亚洲一区二区三区精品动漫| 欧美国产日韩亚洲一区| 午夜精品国产更新| 99re6热只有精品免费观看 | 欧美~级网站不卡| 亚洲免费影视| 欧美精品 日韩| 91久久精品网| 亚洲国产精品一区在线观看不卡| 欧美在线一区二区| 欧美日韩国产黄| 欧美高清视频| 国内综合精品午夜久久资源| 午夜精彩国产免费不卡不顿大片| 亚洲国产中文字幕在线观看| 久久国产精品亚洲va麻豆| 国产精品日韩欧美综合| 亚洲午夜精品久久久久久app| 欧美亚洲在线观看| 久久久精品国产一区二区三区| 国产日产欧美a一级在线| 一本色道久久综合亚洲精品不| 欧美成人一二三| 激情小说另类小说亚洲欧美| 久久影院午夜论| 国产区亚洲区欧美区| 久久久久一本一区二区青青蜜月| 亚洲一区二区三区免费在线观看| 欧美久久视频| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲资源av| 欧美激情精品久久久久久| 亚洲精品国产精品久久清纯直播| 麻豆精品在线视频| 韩国一区电影| 久久蜜桃av一区精品变态类天堂| 一区精品在线| 欧美在线视屏| 女人香蕉久久**毛片精品| 免费观看成人| 亚洲国产小视频在线观看| 欧美揉bbbbb揉bbbbb| 亚洲综合成人在线| 国产精品久在线观看| 欧美一区二区三区四区在线观看地址 | 亚洲免费在线观看视频| 亚洲午夜91| 久久久久久久精| 国产在线视频欧美| 久久久久久高潮国产精品视| 在线欧美亚洲| 欧美精品久久久久久久| 欧美一区二区精品久久911| 久久精品国产成人| 老鸭窝亚洲一区二区三区| 欧美日韩在线三级| 亚洲永久视频| 欧美顶级少妇做爰| 亚洲一区二区视频在线| 久久九九久久九九| 亚洲国产另类精品专区| 国产日韩欧美一区| 免费在线看成人av| 亚洲尤物在线| 91久久综合亚洲鲁鲁五月天| 国产性猛交xxxx免费看久久| 欧美电影在线| 亚洲一区二区视频在线| 欧美jizz19性欧美| 一区二区欧美在线观看| 99精品国产福利在线观看免费| 亚洲一本视频| 欧美成熟视频| 欧美伊人久久久久久午夜久久久久| 美女日韩在线中文字幕| 午夜宅男久久久| 在线观看日韩精品| 国产精品在线看| 欧美激情导航| 美女性感视频久久久| 久久婷婷国产麻豆91天堂| 国产精品豆花视频| 免费久久99精品国产自在现线|