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

糯米

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>
            久久视频在线看| 欧美日韩理论| 久久欧美中文字幕| 久久成人久久爱| 日韩亚洲欧美在线观看| 国产一区二区精品丝袜| 国产精品伦一区| 国产嫩草一区二区三区在线观看 | 99re热这里只有精品视频| 激情视频一区二区三区| 国产女优一区| 欧美大色视频| 99re这里只有精品6| 欧美成人亚洲| 国产精品v一区二区三区| 欧美午夜影院| 国产在线观看精品一区二区三区| 国产精品ⅴa在线观看h| 欧美日韩一区二区三区高清| 欧美视频在线观看一区| 嫩草国产精品入口| 欧美日韩午夜激情| 国产亚洲精品aa| 亚洲国产精品激情在线观看| 99国产欧美久久久精品| 欧美一区二区三区精品| 欧美不卡在线| 亚洲一区二区伦理| 欧美91精品| 国产日韩精品一区二区三区 | 久久久久久穴| 亚洲精品在线观看视频| 性做久久久久久久久| 欧美成人一区二区三区在线观看| 欧美日韩激情网| 亚洲国产三级在线| 卡通动漫国产精品| 欧美影院成人| 国产欧美一区视频| 亚洲视频碰碰| 亚洲看片一区| 欧美久久久久久久久久| 亚洲精品乱码久久久久久按摩观| 一区福利视频| 久久五月激情| 久久久久久久一区二区三区| 国产欧美日韩在线观看| 麻豆9191精品国产| 亚洲精品三级| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲伊人第一页| 最新日韩精品| 欧美少妇一区| 欧美专区在线播放| 开心色5月久久精品| 亚洲人妖在线| 性欧美8khd高清极品| 国产综合久久久久影院| 欧美成人黄色小视频| 国产精品国产三级国产aⅴ无密码| 亚洲在线第一页| 乱码第一页成人| 亚洲在线一区| 快she精品国产999| 久久精品视频免费| 欧美日韩亚洲一区二区三区四区 | 猛干欧美女孩| 亚洲一区欧美| 欧美电影在线观看完整版| 亚洲一区欧美| 久久婷婷成人综合色| 在线视频成人| 在线亚洲成人| 亚洲大胆av| 一区二区三区四区五区精品| 国产精品久久久久免费a∨ | 最新国产成人av网站网址麻豆 | 欧美日韩精品欧美日韩精品 | 亚洲高清免费视频| 99热这里只有成人精品国产| 国产午夜亚洲精品不卡| 欧美自拍偷拍| 欧美日韩一区二区三区在线视频| 久久久久.com| 国产精品亚洲综合| 亚洲精品国精品久久99热一| 国产一区在线视频| 亚洲欧美日韩国产综合| 一本色道久久加勒比精品| 久久久久一本一区二区青青蜜月| 亚洲图片在线| 欧美色偷偷大香| 夜夜嗨av色综合久久久综合网| 1000部精品久久久久久久久| 欧美一区二区啪啪| 亚洲欧美日韩一区二区| 欧美日韩在线播放三区四区| 久久久亚洲国产美女国产盗摄| 国产精品高清在线| 亚洲一二三区在线| 午夜久久资源| 国产亚洲一级高清| 久久九九国产精品| 欧美国产日韩免费| 亚洲色图自拍| 国产拍揄自揄精品视频麻豆| 欧美一区二区视频97| 国产一区在线视频| 久久久久国色av免费观看性色| 女人色偷偷aa久久天堂| 亚洲美女av电影| 午夜国产精品视频免费体验区| 国产日韩高清一区二区三区在线| 亚洲人成啪啪网站| 久久国产精品一区二区| 国产日韩欧美一二三区| 免费观看成人网| 亚洲欧美日韩国产一区二区| 免费不卡在线观看| 欧美一级精品大片| 日韩一级欧洲| 亚洲大片精品永久免费| 国产精品久久久久久久久久免费看| 久久国产精品久久久| 亚洲精品一区在线| 亚洲黄网站黄| 亚洲黄色在线看| 亚洲国产精品va在线观看黑人| 亚洲欧美国产精品va在线观看 | 亚洲人妖在线| 久久久国产亚洲精品| 夜夜嗨av一区二区三区| 亚洲精品小视频| 久久人人精品| 久久精品亚洲一区二区三区浴池| 亚洲国产精品一区| 久久这里只有| 伊人狠狠色j香婷婷综合| 国产精品久线观看视频| 国产自产精品| 女同性一区二区三区人了人一 | 一区二区日韩| 一区二区日本视频| 一本色道久久综合亚洲精品高清| 在线看国产一区| 亚洲精品久久久久久久久| 亚洲国产精品va在线看黑人动漫| 国产精品成人在线| 国产精品劲爆视频| 国产一区视频在线看| 欧美国产日韩精品| 国产精品高潮在线| 激情一区二区三区| 一区二区三区免费网站| 欧美制服第一页| 亚洲精品国产视频| 久久国内精品自在自线400部| 男女视频一区二区| 国模套图日韩精品一区二区| 日韩亚洲精品在线| 久久精品一区| 夜夜嗨一区二区| 欧美91视频| 亚洲第一精品夜夜躁人人爽| 一区二区三区高清不卡| 久久先锋影音| 一本一道久久综合狠狠老精东影业| 久久精品国产视频| 欧美日韩一区在线视频| 亚洲精品乱码久久久久久久久| 久久久综合激的五月天| 欧美永久精品| 在线看成人片| 亚洲韩日在线| 久久人人97超碰国产公开结果 | 国产精品永久免费| 亚洲在线观看免费| 欧美激情精品久久久久久蜜臀| 欧美一区二区三区免费观看| 国产精品永久在线| 久久免费偷拍视频| 久久亚裔精品欧美| 一区二区电影免费观看| 99在线热播精品免费| 国产精品永久| 伊人成人开心激情综合网| 免费亚洲一区二区| 免费观看30秒视频久久| 男女精品网站| 永久域名在线精品| 一区二区久久久久久| 久久久激情视频| 一区二区三区 在线观看视频| 亚洲无线观看| 亚洲精品一区二区三区蜜桃久| 日韩一区二区电影网| 国产亚洲a∨片在线观看| 亚洲激情六月丁香| 好吊日精品视频| 亚洲欧美日韩在线一区|