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

糯米

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

POJ 1324 Holedox Moving 貪食蛇

思路:

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

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

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

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

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

#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>
            欧美在线黄色| 欧美精品乱人伦久久久久久 | 亚洲欧美国产三级| 欧美国产在线电影| 久久综合国产精品| 久久人人精品| 久久青青草综合| 久久综合网hezyo| 久久精品免费播放| 日韩亚洲国产精品| 亚洲精品小视频| 一本色道久久88精品综合| 亚洲欧洲精品一区二区精品久久久| 国产日韩欧美一区二区| 国产精品男女猛烈高潮激情 | 亚洲激情亚洲| 欧美激情视频免费观看| 亚洲第一二三四五区| 久久成人免费电影| 久久精品视频亚洲| 亚洲欧美视频在线观看视频| 中文一区二区在线观看| 亚洲激情国产| 欧美肥婆bbw| 亚洲国产日韩综合一区| 亚洲精品黄色| 亚洲综合色丁香婷婷六月图片| 亚洲一区二区三区成人在线视频精品 | 欧美精品三区| 国产精品久久久久9999| 亚洲一区视频在线| 亚洲欧美资源在线| 久久精品九九| 欧美国产亚洲另类动漫| 欧美少妇一区| 欧美系列一区| 国内精品福利| 一区二区三区高清不卡| 欧美在线www| 香蕉国产精品偷在线观看不卡| 亚洲女人天堂成人av在线| 久久久精品国产免大香伊| 亚洲第一黄色网| 一区二区三区四区国产| 久久精品国产v日韩v亚洲| 欧美国产日产韩国视频| 女女同性精品视频| 国产精品日韩在线| 亚洲欧洲日韩在线| 欧美有码视频| 一本大道av伊人久久综合| 久久久久久一区| 欧美日韩免费在线| 国产精品高潮视频| 亚洲福利专区| 久久国产毛片| 在线天堂一区av电影| 亚洲小说欧美另类社区| 欧美专区在线观看| 欧美色精品天天在线观看视频| 欧美日韩在线视频首页| 亚洲二区在线观看| 久久黄色小说| 亚洲一区欧美二区| 国产精品一级| 久久亚洲影音av资源网| 欧美中文字幕第一页| 国产亚洲精品久久久| 久久久久久久一区| 老司机精品福利视频| 亚洲大片在线观看| 亚洲欧洲一区二区三区在线观看| 女人色偷偷aa久久天堂| aa亚洲婷婷| 亚洲一区国产精品| 极品少妇一区二区| 亚洲国产美女久久久久| 欧美日韩精品一区二区天天拍小说 | 亚洲电影在线看| 欧美女激情福利| 亚洲欧美综合| 久久成人综合视频| 亚洲精品美女在线| 亚洲午夜在线观看视频在线| 国产日韩精品视频一区| 欧美福利影院| 欧美大片第1页| 欧美在线亚洲一区| 久久精品人人做人人爽| 亚洲特色特黄| 国产一区二区三区久久久| 免费毛片一区二区三区久久久| 美女精品网站| 先锋影音一区二区三区| 麻豆成人av| 亚洲欧美日韩精品| 久久综合久久综合九色| 亚洲深夜福利网站| 久久久久久久999精品视频| 亚洲精品自在在线观看| 午夜久久tv| 99视频+国产日韩欧美| 欧美一区二区免费观在线| 日韩视频第一页| 久久亚洲美女| 久久精品久久99精品久久| 欧美另类高清视频在线| 久久久久看片| 国产精品网站在线播放| 亚洲国产成人av| 国产一区日韩一区| 亚洲视频福利| 国产精品99久久久久久www| 久久久久久**毛片大全| 亚洲一区二区三区欧美| 欧美国产日韩二区| 美女脱光内衣内裤视频久久影院| 国产精品久久久久久妇女6080| 亚洲第一久久影院| 精品成人一区| 欧美诱惑福利视频| 翔田千里一区二区| 欧美三日本三级少妇三2023| 亚洲国产精品一区在线观看不卡 | 欧美亚洲综合网| 亚洲男人第一网站| 国产精品久久久久久福利一牛影视| 最新中文字幕一区二区三区| 好吊色欧美一区二区三区四区| 亚洲小说区图片区| 午夜一区在线| 国产欧美日韩一区二区三区在线观看 | 亚洲尤物在线| 亚洲欧美日韩精品久久亚洲区| 欧美另类videos死尸| 欧美激情一区二区三区| 依依成人综合视频| 久久久久国产免费免费| 久色成人在线| 亚洲国产成人一区| 玖玖在线精品| 亚洲国产日韩一区二区| 99精品视频免费在线观看| 久久精品九九| 亚洲欧美日韩国产| 欧美在线视频免费播放| 国产精品爽黄69| 亚洲私人影院| 久久国产精品99精品国产| 国产日韩专区| 久久天天综合| 亚洲美女黄色片| 亚洲在线一区二区三区| 国产欧美一区二区三区国产幕精品 | 久久久久久久久久久成人| 极品裸体白嫩激情啪啪国产精品| 久久久久久久久久久一区| 欧美成人在线网站| 亚洲午夜免费福利视频| 国产乱人伦精品一区二区| 久久福利影视| 日韩一区二区久久| 久久久亚洲综合| 亚洲人成人一区二区三区| 欧美日韩亚洲一区二区三区在线观看 | 99在线精品观看| 久久久99精品免费观看不卡| 在线精品视频在线观看高清| 欧美福利一区二区| 午夜一区二区三视频在线观看 | 精品1区2区| 欧美日韩免费在线| 久久久久久久久综合| 亚洲精品久久久久久久久久久久久 | 午夜精品久久久久久久99樱桃| 国产日韩欧美在线一区| 免费影视亚洲| 性欧美xxxx大乳国产app| 亚洲国产欧美久久| 久久国产精品72免费观看| 亚洲精品综合| 在线成人av网站| 国产精品人人爽人人做我的可爱| 玖玖国产精品视频| 欧美一区二区三区精品| 亚洲精品久久久久久下一站 | 国产精品亚洲第一区在线暖暖韩国| 久久综合五月天婷婷伊人| 一区二区三区四区五区精品| 欧美1区2区3区| 久久九九精品99国产精品| 亚洲午夜日本在线观看| 亚洲精品一区久久久久久| 在线观看亚洲视频啊啊啊啊| 国产精品亚洲一区| 夜夜躁日日躁狠狠久久88av| 欧美一区二区三区久久精品| 亚洲国产精品欧美一二99| 欧美激情综合| 亚洲一区二区在线视频|