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

糯米

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>
            亚洲美女毛片| 欧美日韩1区2区| 欧美专区在线播放| 亚洲一区二区av电影| 亚洲性视频h| 亚洲视屏在线播放| 午夜精品亚洲| 久久激情综合网| 老司机精品福利视频| 欧美成人一区二区三区| 久久综合网hezyo| 欧美国产日韩a欧美在线观看| 免费日韩一区二区| 亚洲欧洲视频| 99国产麻豆精品| 欧美亚洲在线播放| 欧美a级一区| 国产精品日本精品| 在线成人激情黄色| 亚洲视频在线看| 久久久另类综合| 亚洲精品影视| 久久精品99久久香蕉国产色戒| 母乳一区在线观看| 国产精品毛片a∨一区二区三区|国 | 亚洲尤物视频网| 午夜视频在线观看一区二区三区| 99在线|亚洲一区二区| 亚洲欧美日韩国产成人| 久久夜色精品| 亚洲免费观看| 久久在线免费观看| 日韩视频在线一区二区| 亚洲欧美经典视频| 欧美 日韩 国产 一区| 一区二区日韩免费看| 久久精品一级爱片| 欧美视频观看一区| 影音先锋另类| 午夜精品久久久久久久99热浪潮 | 亚洲男人av电影| 欧美成人免费视频| 羞羞色国产精品| 欧美日韩亚洲系列| 亚洲三级色网| 免费在线视频一区| 欧美一区=区| 欧美午夜精品久久久久久超碰| 亚洲福利av| 久热精品视频| 欧美中文字幕在线播放| 国产精品二区影院| 中文日韩在线| 亚洲精品一区二区三区99| 欧美91精品| 亚洲国产精品第一区二区| 久久久午夜精品| 欧美亚洲综合网| 国产在线拍偷自揄拍精品| 欧美在线视频免费播放| 亚洲欧美日本精品| 国产精品欧美一区二区三区奶水| 亚洲视频在线观看免费| 99成人免费视频| 欧美人成网站| 一区二区三区国产在线| 亚洲国产裸拍裸体视频在线观看乱了| 久久久久久香蕉网| 136国产福利精品导航网址应用| 久久夜色精品国产欧美乱极品| 欧美一站二站| 亚洲大片在线| 亚洲人成网站精品片在线观看 | 亚洲片国产一区一级在线观看| 欧美福利视频一区| 欧美本精品男人aⅴ天堂| 亚洲精品免费在线| 最新国产成人在线观看| 国产伦精品一区| 欧美一区二区视频在线| 亚洲一区二区在| 国产亚洲日本欧美韩国| 美女尤物久久精品| 欧美精品三区| 欧美一区在线看| 久久久久国产精品一区二区| 亚洲精品偷拍| 亚洲免费中文| 亚洲高清激情| 亚洲视频第一页| 精品91久久久久| 亚洲美女淫视频| 国产日韩欧美制服另类| 欧美激情精品久久久久| 国产精品久久久99| 母乳一区在线观看| 欧美午夜精品理论片a级大开眼界| 欧美一区二视频在线免费观看| 欧美在线999| 99riav久久精品riav| 亚洲欧美一区二区激情| 亚洲娇小video精品| 亚洲五月六月| 亚洲国产日韩一区| 亚洲影视中文字幕| 亚洲激情一区二区| 欧美一区二区视频在线观看| 一本到高清视频免费精品| 欧美一区网站| 一区二区国产日产| 久久性色av| 久久国产黑丝| 国产精品激情偷乱一区二区∴| 美女网站在线免费欧美精品| 国产精品毛片va一区二区三区 | 香蕉成人伊视频在线观看| 母乳一区在线观看| 久久免费视频在线观看| 国产精品久久网站| 亚洲美女免费视频| 亚洲人久久久| 久久综合九色欧美综合狠狠| 久久久久久久国产| 国产精品婷婷| 一区二区欧美国产| av成人福利| 欧美激情一区二区久久久| 亚洲激情第一页| 国产欧美日本一区二区三区| 欧美+日本+国产+在线a∨观看| 欧美色另类天堂2015| 欧美搞黄网站| 韩国欧美国产1区| 亚洲自拍偷拍麻豆| 久热精品视频在线观看| 欧美人与禽性xxxxx杂性| 欧美大胆a视频| 国产日韩精品在线播放| 亚洲欧美激情一区| 亚洲欧美中文另类| 欧美视频一区二区三区四区| 日韩亚洲精品在线| 一区二区三区日韩在线观看| 欧美成人一品| 国产精品揄拍一区二区| 欧美一区二区在线| 欧美日本一区二区三区| 欧美激情亚洲| 亚洲激情在线观看| 美腿丝袜亚洲色图| 亚洲国产精品国自产拍av秋霞| 国产一区二区三区不卡在线观看 | 欧美日韩在线免费| 日韩一级精品| 香蕉久久精品日日躁夜夜躁| 国产午夜精品一区二区三区欧美 | 欧美日韩在线视频一区二区| 欧美激情区在线播放| 亚洲国产欧美久久| 欧美激情久久久| 99精品国产热久久91蜜凸| 亚洲在线视频| 国产一区二区三区高清| 久久在线播放| 亚洲六月丁香色婷婷综合久久| 亚洲午夜精品久久久久久浪潮| 国产精品日韩一区二区| 久久精品道一区二区三区| 亚洲高清久久网| 亚洲欧美日韩国产一区二区三区| 国产日韩亚洲欧美| 欧美.www| 午夜一区在线| 激情欧美国产欧美| 欧美在线三级| 亚洲国产老妈| 欧美在线免费| 亚洲精品久久嫩草网站秘色 | 久久精品夜色噜噜亚洲a∨ | 久久av二区| 亚洲福利小视频| 国产精品黄色在线观看| 国产精品自拍网站| 亚洲欧美综合另类中字| 欧美福利视频在线观看| 欧美一区二区国产| 亚洲国产精品一区二区尤物区| 国产精品chinese| 欧美99在线视频观看| 久久av在线| 在线一区观看| 亚洲国产影院| 免费视频亚洲| 久久久久五月天| 香蕉亚洲视频| 亚洲调教视频在线观看| 亚洲全部视频| 亚洲高清网站| 一区二区三区亚洲| 国产一区二区三区不卡在线观看|