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

糯米

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

POJ 2374 Fence Obstacle Course 線段樹+動態(tài)規(guī)劃

思路:

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

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

同時也可以發(fā)現(xiàn),一個fence保存兩個值用作動態(tài)規(guī)劃就好了,向左、右走之后,掉到其他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 糯米 閱讀(1388) 評論(2)  編輯 收藏 引用 所屬分類: POJ

評論

# re: POJ 2374 Fence Obstacle Course 線段樹+動態(tài)規(guī)劃  回復  更多評論   

知道為什么要用線段樹,我直接開辟一個數(shù)組,每次將第i個fense的區(qū)間標記為i,好像也能得到正確的結(jié)果,可是會運行超時,不知道為什么?
#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 線段樹+動態(tài)規(guī)劃  回復  更多評論   

@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>
            亚洲国产日韩欧美一区二区三区| 日韩午夜剧场| 久久久久久精| 一色屋精品视频在线看 | 米奇777超碰欧美日韩亚洲| 国产综合久久| 欧美成人久久| 欧美三级电影一区| 欧美在线观看你懂的| 久久国产高清| 亚洲欧洲日本在线| 99精品视频一区| 国产亚洲视频在线观看| 免费在线播放第一区高清av| 欧美**字幕| 亚洲一区亚洲| 久久精品久久99精品久久| 亚洲国产日韩欧美在线99| 亚洲毛片在线观看| 国产伦精品一区二区三区视频孕妇| 久久精品国产亚洲高清剧情介绍| 久久久精品五月天| 亚洲天堂av图片| 久久久噜噜噜久久中文字幕色伊伊 | 蜜桃av噜噜一区| 欧美日韩成人一区二区三区| 欧美影院在线| 欧美黄色成人网| 性欧美大战久久久久久久久| 久久米奇亚洲| 性伦欧美刺激片在线观看| 老司机精品久久| 亚洲欧美三级在线| 美玉足脚交一区二区三区图片| 亚洲一区二区三区国产| 久久婷婷亚洲| 欧美在线资源| 欧美丝袜第一区| 亚洲成在人线av| 国产亚洲激情| 在线综合亚洲欧美在线视频| 91久久精品美女| 久久国产福利| 久久精品人人爽| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 亚洲深夜福利| 久久影音先锋| 久久激情网站| 国产精品久久久久秋霞鲁丝| 亚洲国产欧美一区二区三区久久| 激情懂色av一区av二区av| 亚洲制服欧美中文字幕中文字幕| 亚洲毛片在线观看.| 久久久久女教师免费一区| 久久精品91久久久久久再现| 国产精品国产三级国产专播品爱网| 亚洲国产精品毛片| 亚洲福利在线视频| 久久婷婷国产综合尤物精品| 久久综合九色综合欧美就去吻| 国产日韩欧美夫妻视频在线观看| 亚洲午夜精品| 亚洲欧美日韩在线观看a三区| 欧美日韩亚洲一区二区三区在线 | 欧美在线观看视频一区二区三区| 午夜精品免费在线| 欧美体内she精视频| 亚洲精品久久7777| 一区二区欧美精品| 欧美日韩国产精品专区| 日韩视频一区二区三区在线播放免费观看 | 欧美视频一区二区在线观看 | 久久综合狠狠综合久久综青草 | 精品二区久久| 久久尤物视频| 欧美国产日韩一二三区| 亚洲精品123区| 欧美成人亚洲| 在线亚洲观看| 欧美在线视频全部完| 国产婷婷成人久久av免费高清| 欧美一区二区三区四区视频| 久久在线免费观看| 亚洲人成网在线播放| 欧美日韩精品免费观看视一区二区 | 一区二区三区视频在线播放| 亚洲永久视频| 国内精品一区二区| 久久人人精品| 99精品国产在热久久下载| 午夜激情综合网| 永久免费精品影视网站| 欧美激情国产精品| 亚洲欧美自拍偷拍| 欧美好骚综合网| 亚洲综合三区| 亚洲丁香婷深爱综合| 欧美日韩国产成人在线| 性高湖久久久久久久久| 亚洲国产精品久久久久秋霞蜜臀| 亚洲午夜未删减在线观看| 国产欧美一区二区三区沐欲 | 美女主播一区| 一区二区三区视频在线看| 久久精品夜色噜噜亚洲aⅴ| 亚洲电影免费观看高清| 欧美色图天堂网| 久久综合九色| 性伦欧美刺激片在线观看| 亚洲欧洲精品天堂一级| 久久久久久一区二区| 在线亚洲自拍| 最新成人av在线| 国产日韩精品视频一区| 欧美理论视频| 久久一区国产| 亚洲欧美中文字幕| 99国内精品久久| 亚洲福利视频三区| 久久伊人亚洲| 久久精品91久久久久久再现| 一区二区三区久久网| 在线观看三级视频欧美| 国产欧美一区二区三区久久人妖| 欧美激情国产日韩| 久久在线播放| 久久久久久成人| 欧美一区二区三区视频在线| 宅男噜噜噜66一区二区| 亚洲精品日产精品乱码不卡| 亚洲第一黄网| 欧美大片在线观看一区| 久久久久久久久岛国免费| 欧美亚洲一区二区在线观看| 亚洲一区二区3| 一区二区三区不卡视频在线观看| 最新69国产成人精品视频免费| 伊人成综合网伊人222| 国产视频亚洲| 国产欧美一区二区精品忘忧草| 欧美视频在线免费| 欧美色网在线| 国产精品初高中精品久久| 欧美视频在线一区二区三区| 欧美日韩在线精品| 欧美视频一区在线| 国产精品99免费看 | 免费观看成人| 久久久久欧美精品| 久久久精品日韩| 麻豆国产va免费精品高清在线| 久久久一区二区| 久久亚洲私人国产精品va| 另类亚洲自拍| 欧美久久婷婷综合色| 欧美日韩一区视频| 国产精品久久久久久久久久免费看 | 免费看的黄色欧美网站| 免费中文日韩| 欧美日韩无遮挡| 国产精品毛片高清在线完整版| 国产精品视频免费观看| 国产亚洲精品激情久久| 亚洲第一二三四五区| 亚洲日本在线观看| 亚洲深夜福利| 久久久久久久综合狠狠综合| 麻豆精品精华液| 亚洲激情网站| 亚洲图片在线观看| 欧美在线亚洲综合一区| 免费永久网站黄欧美| 欧美性色综合| 在线观看成人小视频| 99精品视频免费| 欧美专区在线| 亚洲国内自拍| 欧美亚洲自偷自偷| 免费观看不卡av| 国产精品卡一卡二| 亚洲国产三级在线| 亚洲一区二区伦理| 欧美11—12娇小xxxx| 亚洲视频导航| 免费在线亚洲欧美| 国产精品日韩在线一区| 亚洲二区在线观看| 欧美一区二区免费视频| 亚洲国产合集| 久久狠狠亚洲综合| 国产精品成人av性教育| 精品999成人| 午夜欧美大尺度福利影院在线看| 美女脱光内衣内裤视频久久影院| 夜夜嗨网站十八久久| 麻豆久久婷婷| 国产有码一区二区| 亚洲免费一在线| 亚洲乱码国产乱码精品精| 久久久久久久久久久久久9999|