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

糯米

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

POJ 1324 Holedox Moving 貪食蛇

思路:

繼推箱子以后,又發(fā)現(xiàn)POJ上有這類題目,哈哈。
這次是給出一條貪食蛇當(dāng)前的狀態(tài)、墻的位置、食物的位置。求吃到食物需要走的最小的步數(shù)。

這類題目是相當(dāng)牛逼的!高手的速度可以做到很BT的。
在 status 上面就看到有 0ms 的!相當(dāng)震驚,如此龐大的數(shù)據(jù)量能做到 0ms,肯定是神牛!
后來搜了一下,還找到了那位神牛的博客,看了一下,發(fā)現(xiàn)看不大懂,杯具。。

哪一天有空,一定會再想一下這道題的。

一開始想了一個(gè)剪枝的方法,如果:
1. 蛇頭在可以穿越蛇的身體的情況下,到達(dá)食物所用的最小步數(shù),
2. 蛇頭在不能穿越身體的情況下,到達(dá)食物所用的最小步數(shù)
這兩個(gè)值相等的話,就不用繼續(xù)擴(kuò)展當(dāng)前狀態(tài)了。
一開始覺得還挺牛逼,結(jié)果一提交 TLE了,無語了。POJ 的數(shù)據(jù)真不是蓋的,當(dāng)然主要問題還是哥的代碼太爛了。

 后來改成現(xiàn)在這樣子了。跑了1秒+。。
表示蛇的狀態(tài)的時(shí)候,保存頭的位置、每段身體跟前一段偏移的方向。
不然沒法判重的。

#include <stdio.h>
#include 
<string.h>

#define QUEUE_SIZE (1 << 16)

struct node {
    
char y, x;
    unsigned 
short s;
    
int step;
}
;

int N, M, L;
int hash[24][24][1 << 14], tm;
struct node queue[QUEUE_SIZE];
int head, tail;
char map[24][24];
unsigned 
short mask;

inline 
struct node input()
{
    
struct node t;
    
int y, x, i, nx, ny;

    scanf(
"%d%d"&y, &x);
    t.y 
= y;
    t.x 
= x;
    t.s 
= 0;
    
for (i = 0; i < L - 1; i++{
        scanf(
"%d%d"&ny, &nx);
        
if (nx == x) 
            t.s 
|= (ny < y ? 0 : 1<< (i * 2);
        
else
            t.s 
|= (nx < x ? 2 : 3<< (i * 2);
        y 
= ny;
        x 
= nx;
    }

    t.step 
= 0;

    
return t;
}


inline 
void push(struct node t)
{
    
if (hash[t.y][t.x][t.s] == tm)
        
return ;
    
    hash[t.y][t.x][t.s] 
= tm;
    queue[tail
++= t;
    tail 
&= QUEUE_SIZE - 1;
}


inline 
void move(struct node t, int dir)
{
    
int i, y, x;
    
    y 
= t.y;
    x 
= t.x;

    
switch (dir) {
    
case 0: t.y--; dir = 1break;
    
case 1: t.y++; dir = 0break;
    
case 2: t.x--; dir = 3break;
    
case 3: t.x++; dir = 2break;
    }

    
if (t.y < 1 || t.y > N || t.x < 1 || t.x > M || map[t.y][t.x] == '@')
        
return ;

    
for (i = 0; i < L - 1; i++{
        
switch ((t.s >> (i * 2)) & 3{
        
case 0: y--break;
        
case 1: y++break;
        
case 2: x--break;
        
case 3: x++break;
        }

        
if (t.y == y && t.x == x)
            
break;
    }

    
if (i < L - 1)
        
return ;

    t.s 
<<= 2;
    t.s 
&= mask;
    t.s 
|= dir;
    t.step
++;

    push(t);
}


inline 
int bfs(struct node t)
{
    head 
= tail = 0;
    tm
++;
    push(t);
    
while (head != tail) {
        t 
= queue[head++];
        head 
&= QUEUE_SIZE - 1;
        
if (t.x == 1 && t.y == 1)
            
break;
        move(t, 
0);
        move(t, 
1);
        move(t, 
2);
        move(t, 
3);
    }


    
return (t.x == 1 && t.y == 1? t.step : -1;
}


int main()
{
    
int y, x, c, k;
    
struct node t;
 
    freopen(
"e:\\test\\in.txt""r", stdin);

    
for (c = 1; scanf("%d%d"&N, &M), N; c++{
        memset(map, 
'.'sizeof(map));
        scanf(
"%d"&L);
        mask 
= (1 << ((L - 1* 2)) - 1;
        t 
= input();
        scanf(
"%d"&k);
        
while (k--{
            scanf(
"%d%d"&y, &x);
            map[y][x] 
= '@';
        }

        printf(
"Case %d: %d\n", c, bfs(t));
    }


    
return 0;
}

posted on 2010-04-17 20:47 糯米 閱讀(759) 評論(0)  編輯 收藏 引用 所屬分類: POJ

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲图片欧美日产| 夜夜嗨av一区二区三区| 久久精品日韩欧美| 亚洲欧美精品suv| 亚洲一区免费| 欧美一区二区免费视频| 久久亚洲国产成人| 欧美精品三区| 国产精品天天摸av网| 精品动漫一区| 一区二区三区**美女毛片 | 欧美日韩国产精品| 欧美视频国产精品| 国产日韩欧美高清| 亚洲欧洲一区| 亚洲欧美自拍偷拍| 久久亚洲精品伦理| 亚洲精品小视频| 午夜精品久久久久久久久| 免费一级欧美片在线观看| 国产精品国产一区二区| 一区二区三区在线观看国产| 9久re热视频在线精品| 久久成年人视频| 亚洲国产精品v| 日韩视频在线观看免费| 欧美一级精品大片| 欧美精品在欧美一区二区少妇| 国产精品日韩久久久久| 最新亚洲视频| 久久综合五月| 亚洲婷婷在线| 欧美人妖另类| 亚洲黄色三级| 久久夜色精品国产噜噜av| 99热精品在线| 欧美成人第一页| 国内精品久久久久久久果冻传媒| 99精品视频免费在线观看| 久久精品中文| 在线视频欧美精品| 蜜桃久久av一区| 国产亚洲欧美日韩在线一区 | 亚洲欧美激情一区二区| 欧美成人精品一区二区三区| 亚洲伊人网站| 国产精品美女www爽爽爽| 一区二区国产在线观看| 亚洲国产日韩欧美| 女生裸体视频一区二区三区| 狠狠色综合网| 久久久av毛片精品| 午夜日韩视频| 亚洲永久免费视频| 欧美日韩一区二区免费视频| 亚洲人成啪啪网站| 亚洲电影第1页| 久久躁狠狠躁夜夜爽| 国产一区导航| 久久久免费观看视频| 欧美亚洲免费高清在线观看| 国产精品久久久久久久久久免费 | 亚洲啪啪91| 欧美激情视频在线免费观看 欧美视频免费一 | 久久久久欧美精品| 亚洲欧美高清| 国产欧美精品va在线观看| 欧美一区二区精品| 久久99伊人| 国产最新精品精品你懂的| 久久先锋影音| 老牛国产精品一区的观看方式| 伊人久久婷婷| 亚洲国产成人久久| 欧美日韩视频一区二区| 性欧美暴力猛交69hd| 欧美一区二区视频在线观看| 激情国产一区| 91久久夜色精品国产九色| 欧美日韩黄视频| 欧美一区二区精品久久911| 久久久成人网| 99国产精品久久久| 亚洲综合日韩中文字幕v在线| 国产色产综合产在线视频| 麻豆91精品91久久久的内涵| 欧美激情一级片一区二区| 午夜精品久久久久久久久久久久久| 香蕉免费一区二区三区在线观看 | 亚洲男人的天堂在线aⅴ视频| 国产一区二区久久精品| 亚洲大胆视频| 国产乱码精品1区2区3区| 免费久久精品视频| 欧美午夜剧场| 欧美大胆人体视频| 国产精品一区久久| 亚洲第一综合天堂另类专| 国产精品狠色婷| 欧美国产在线电影| 亚洲激情校园春色| 亚洲精品中文字幕女同| 麻豆国产精品va在线观看不卡| 亚洲夜间福利| 美女精品国产| 久久国产天堂福利天堂| 欧美日产一区二区三区在线观看 | 亚洲精品国产视频| 欧美一二三视频| 99国产精品国产精品久久| 久久国产主播| 欧美一区永久视频免费观看| 欧美激情影院| 欧美成人一区二区在线| 国产无遮挡一区二区三区毛片日本| 亚洲欧洲日产国产综合网| 一区二区亚洲| 久久激五月天综合精品| 欧美亚洲尤物久久| 欧美午夜精品| 日韩亚洲在线观看| 99精品国产一区二区青青牛奶| 久久亚洲电影| 蜜桃av噜噜一区| 国产在线视频不卡二| 亚洲小说欧美另类社区| 亚洲午夜电影网| 欧美日韩国产成人在线91| 亚洲国产精品悠悠久久琪琪| 亚洲高清免费在线| 久久午夜电影| 欧美国产视频一区二区| 91久久精品网| 欧美电影在线播放| 亚洲国产高清视频| 亚洲精品国久久99热| 欧美福利视频在线| 亚洲欧洲综合| 亚洲午夜伦理| 国产精品外国| 久久国产99| 美女日韩在线中文字幕| 亚洲电影在线观看| 欧美成人精品| 日韩一级黄色av| 欧美一区在线看| 一区在线观看视频| 免费精品99久久国产综合精品| 亚洲大片免费看| 这里是久久伊人| 国产老肥熟一区二区三区| 久久福利毛片| 最新亚洲电影| 翔田千里一区二区| 国内精品免费午夜毛片| 欧美成人高清| 亚洲在线1234| 欧美成人r级一区二区三区| 亚洲人成艺术| 国产精品外国| 蘑菇福利视频一区播放| 日韩亚洲视频| 久久一区中文字幕| 日韩一级大片| 国产亚洲制服色| 欧美电影免费观看大全| 亚洲尤物在线| 亚洲国产精品尤物yw在线观看| 亚洲欧美日韩国产另类专区| 久久久91精品国产一区二区精品| 一区三区视频| 欧美日韩一区二区在线观看| 午夜国产欧美理论在线播放| 欧美11—12娇小xxxx| 亚洲视频在线一区| 韩日欧美一区二区三区| 欧美日韩国产精品一区二区亚洲| 香蕉亚洲视频| 一区二区不卡在线视频 午夜欧美不卡在 | 黄色国产精品| 欧美日韩中文字幕精品| 久久国产一区二区三区| 日韩亚洲欧美精品| 欧美jizzhd精品欧美巨大免费| 亚洲图片激情小说| 亚洲国产精品成人一区二区 | 亚洲精品一线二线三线无人区| 国产欧美一二三区| 欧美日韩国产影院| 美女精品视频一区| 午夜精品福利在线观看| 亚洲精品中文字幕在线观看| 鲁大师成人一区二区三区| 欧美一区二区三区免费大片| 99在线热播精品免费99热| 亚洲国产精品一区二区尤物区| 好吊日精品视频| 国产一区香蕉久久| 国产女人aaa级久久久级| 国产精品久久久久久久电影|