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

糯米

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>
            国内精品国产成人| 欧美精品一区二区三区久久久竹菊| 亚洲一线二线三线久久久| 亚洲福利视频免费观看| 久久婷婷蜜乳一本欲蜜臀| 一本大道久久a久久综合婷婷| 久久久xxx| 久久深夜福利| 久久久福利视频| 老色批av在线精品| 美女主播精品视频一二三四| 欧美成人黄色小视频| 亚洲第一免费播放区| 亚洲美洲欧洲综合国产一区| 亚洲视频精品在线| 小处雏高清一区二区三区 | 亚洲深夜激情| 亚洲一区二区黄色| 久久精品国产在热久久 | 国产欧美在线观看| 国产亚洲一本大道中文在线| 亚洲第一色在线| 亚洲综合国产精品| 欧美第一黄色网| 亚洲在线观看免费视频| 美女视频黄a大片欧美| 国产精品久久久99| 亚洲激情网址| 久久九九99视频| 日韩一区二区福利| 久久综合色综合88| 国产精品主播| 在线视频你懂得一区| 久久一本综合频道| 在线亚洲欧美视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美专区日韩视频| 亚洲国产婷婷香蕉久久久久久99| 亚洲欧美国产一区二区三区| 久久久久久久999精品视频| 日韩午夜激情av| 欧美1区2区视频| 国产在线精品一区二区夜色| 亚洲网站视频| 亚洲日本aⅴ片在线观看香蕉| 久久综合一区二区| 日韩亚洲欧美高清| 欧美极品在线观看| 亚洲国产精品成人综合色在线婷婷| 国产视频在线观看一区二区| 亚洲国产另类久久久精品极度| 亚洲电影在线| 久久久久天天天天| 久久综合久久久| 亚洲女同精品视频| 国产精品日韩久久久| 一区二区三区欧美视频| 最近中文字幕日韩精品 | 欧美一区综合| 夜夜嗨av色综合久久久综合网| 亚洲激情av| 久久青草欧美一区二区三区| 国产日韩欧美一区二区| 午夜亚洲性色视频| 亚洲欧美不卡| 国产精品入口日韩视频大尺度| 国产精品乱人伦中文| 在线亚洲自拍| 亚洲视频电影图片偷拍一区| 欧美午夜精品久久久久免费视| 欧美亚洲成人网| 宅男66日本亚洲欧美视频| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩精品福利| 一区二区三区四区五区精品视频| 午夜精品视频在线观看| 99热这里只有精品8| 国产精品久久久久久av福利软件| 国语自产精品视频在线看一大j8| 欧美性猛交xxxx乱大交退制版 | 欧美韩日高清| 欧美高清在线观看| 亚洲自拍都市欧美小说| 亚洲欧美日韩在线观看a三区 | 亚洲激情在线激情| 欧美精品一区二| 先锋影音一区二区三区| 欧美一区二区免费视频| 亚洲高清在线精品| 亚洲免费观看| 国产视频欧美视频| 亚洲电影观看| 国产精品免费网站在线观看| 老**午夜毛片一区二区三区| 久久亚洲美女| 亚洲欧美综合另类中字| 久久久久免费| 亚洲系列中文字幕| 久久男人av资源网站| 一区二区日本视频| 久久精彩视频| 一区二区三区四区在线| 久久精品国产77777蜜臀| 99综合电影在线视频| 欧美一区二区啪啪| 亚洲视频999| 久久综合一区二区| 久久国产婷婷国产香蕉| 久久九九精品| 欧美久久久久久| 久久青青草原一区二区| 欧美日韩精品在线视频| 蜜乳av另类精品一区二区| 欧美日韩精品综合| 欧美a级片网站| 国产精品视频网站| 亚洲卡通欧美制服中文| 在线观看成人网| 先锋a资源在线看亚洲| 宅男噜噜噜66一区二区| 美女诱惑一区| 久久综合九色综合欧美狠狠| 国产精品久久久久久av下载红粉| 日韩一本二本av| 久久久噜噜噜久噜久久| 性久久久久久久久久久久| 欧美日韩精品在线播放| 亚洲国产成人在线| 亚洲电影下载| 鲁大师成人一区二区三区| 久久精品人人| 国产日韩欧美高清| 香蕉久久夜色精品国产| 午夜日韩电影| 国产精品亚发布| 这里只有精品丝袜| 亚洲一区日韩在线| 国产精品久久久久aaaa九色| 夜夜爽av福利精品导航| 亚洲少妇在线| 欧美日韩亚洲成人| 日韩午夜在线视频| 亚洲一区二区黄| 国产精品久久久久久超碰| 亚洲午夜女主播在线直播| 亚洲在线视频| 国产精品久久久久久久久久尿| 久久久久久香蕉网| 国内一区二区在线视频观看| 欧美一区二区黄| 欧美电影免费观看大全| 亚洲精品视频中文字幕| 欧美日韩一区二区三区四区在线观看 | 亚洲黄色免费电影| 美女日韩在线中文字幕| 欧美mv日韩mv国产网站| 亚洲国产成人精品久久| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美精品一区二区三区视频| 免费欧美在线视频| 亚洲日本电影| 国产精品啊v在线| 欧美一区二区黄色| 亚洲国产高清在线观看视频| 99综合视频| 亚洲国产综合视频在线观看| 影音先锋成人资源站| 久久精品成人一区二区三区| 久久人人爽人人| 91久久久国产精品| 欧美性猛交视频| 久久婷婷一区| 一区二区成人精品| 美女福利精品视频| 亚洲午夜精品一区二区| 国产在线国偷精品产拍免费yy| 亚洲乱码精品一二三四区日韩在线 | 欧美性猛交xxxx乱大交退制版| 久久夜色精品国产欧美乱极品| 欧美欧美全黄| 亚洲一区二区在线视频| 欧美福利一区| 欧美一区二区免费视频| 最近中文字幕日韩精品| 欧美日韩精品一区视频| 欧美在线视频免费| 在线视频免费在线观看一区二区| 日韩亚洲欧美综合| 国产日韩亚洲欧美精品| 久久婷婷蜜乳一本欲蜜臀| 亚洲图片欧美午夜| 亚洲精品护士| 久久综合激情| 欧美中文在线观看国产| 99精品视频网| 伊人激情综合| 国产一区二区三区在线观看免费视频| 亚洲欧美日韩国产一区二区| 亚洲国产高清aⅴ视频| 免费成人在线观看视频|