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

糯米

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>
            国产精品xxxav免费视频| 狂野欧美激情性xxxx欧美| 国产精品综合视频| 国产精品人人做人人爽人人添| 欧美日韩国内| 国产精品扒开腿做爽爽爽软件| 欧美视频国产精品| 国产精品久久777777毛茸茸| 国产欧美日韩中文字幕在线| 欧美一区二区三区在线观看| 亚洲一区二区在线免费观看| 欧美一二区视频| 美女网站久久| 欧美久久综合| 国产欧美在线视频| 亚洲国产欧美日韩另类综合| 亚洲午夜激情免费视频| 久久成人国产| 亚洲三级电影全部在线观看高清| 欧美激情一区二区久久久| 亚洲理论电影网| 久久国产综合精品| 欧美日韩精选| 一色屋精品视频在线观看网站| 亚洲精品永久免费| 午夜视频在线观看一区二区三区 | 亚洲精品免费一二三区| 一本色道**综合亚洲精品蜜桃冫 | 亚洲精品日产精品乱码不卡| 亚洲一区二区四区| 蜜乳av另类精品一区二区| 日韩午夜在线电影| 久久久91精品国产一区二区三区| 欧美久色视频| 亚洲国产精品一区二区第一页| 亚洲欧美制服另类日韩| 亚洲电影免费观看高清完整版在线观看 | 欧美日韩直播| 亚洲人成人一区二区在线观看 | 99视频精品在线| 久久久久久久久综合| 亚洲成人在线免费| 欧美午夜一区二区| 亚洲国产视频直播| 久久成人一区二区| 亚洲午夜精品17c| 欧美福利小视频| 亚洲福利电影| 蜜桃av综合| 久久国产一区二区| 国产综合色在线视频区| 香蕉成人久久| 亚洲午夜久久久| 国产精品红桃| 亚洲欧美精品在线| 亚洲视频图片小说| 国产精品精品视频| 欧美一区二区三区视频免费播放| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美日韩一区二区免费在线观看| 亚洲日本视频| 欧美高清自拍一区| 老司机一区二区三区| 亚洲成人在线观看视频| 欧美ab在线视频| 欧美成人xxx| 亚洲美女免费视频| 亚洲美女91| 国产精品普通话对白| 欧美一区二区网站| 欧美在线观看一区二区| 雨宫琴音一区二区在线| 欧美激情精品久久久久| 欧美日韩国产探花| 欧美一区二区三区在线观看视频| 欧美有码视频| 亚洲精品看片| 亚洲视频香蕉人妖| 国产亚洲亚洲| 亚洲高清电影| 国产精品人成在线观看免费 | 一本色道久久综合亚洲91| 一区二区高清| 今天的高清视频免费播放成人| 欧美a级在线| 欧美调教vk| 毛片一区二区三区| 欧美日韩www| 久久av最新网址| 亚洲国产另类久久精品| 国产精品v欧美精品v日本精品动漫| 性亚洲最疯狂xxxx高清| 噜噜噜久久亚洲精品国产品小说| 一区二区三区精品国产| 欧美在线观看一区| 艳女tv在线观看国产一区| 午夜精品久久久久久久久| 91久久精品www人人做人人爽| 中文在线资源观看网站视频免费不卡 | 国产亚洲永久域名| 亚洲国产欧美另类丝袜| 国产欧美一区二区精品秋霞影院| 欧美韩日一区| 国产一级一区二区| 亚洲最快最全在线视频| 亚洲高清三级视频| 亚洲欧美精品在线观看| 99亚洲精品| 毛片精品免费在线观看| 欧美在线关看| 国产精品乱码人人做人人爱| 亚洲电影免费观看高清| 国产一区二区三区观看| 在线视频亚洲一区| 亚洲另类自拍| 久久综合色播五月| 久久精品亚洲一区二区三区浴池| 欧美日韩三级电影在线| 欧美黄色视屏| 亚洲高清精品中出| 久久不射2019中文字幕| 欧美中文字幕在线视频| 国产精品色网| 亚洲欧美日韩国产综合| 亚洲欧美日韩久久精品| 欧美日韩在线第一页| 亚洲精品国产欧美| 亚洲伦理中文字幕| 欧美激情视频一区二区三区在线播放| 美女主播精品视频一二三四| 红桃视频亚洲| 噜噜噜躁狠狠躁狠狠精品视频| 六月婷婷久久| 精品白丝av| 久久免费视频在线观看| 美女主播一区| 亚洲国产1区| 蜜臀av性久久久久蜜臀aⅴ| 美女视频网站黄色亚洲| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美激情乱人伦| 亚洲国产小视频| 9国产精品视频| 欧美日精品一区视频| 国产精品99久久99久久久二8 | 又紧又大又爽精品一区二区| 久久成人免费网| 久久资源av| 亚洲精品免费电影| 欧美日韩高清免费| 亚洲网在线观看| 久久精品国产清高在天天线| 精品二区视频| 欧美人与性动交cc0o| 亚洲一区二区三区久久| 久久久亚洲综合| 999在线观看精品免费不卡网站| 欧美日产在线观看| 亚洲欧美日韩精品在线| 久久中文字幕导航| 一区二区三区欧美日韩| 国产欧美韩国高清| 美女91精品| 亚洲一区二区三区视频| 免费成年人欧美视频| 一区二区三区视频在线观看| 国产日韩精品一区二区三区 | 欧美久久久久久| 午夜亚洲福利| 91久久精品国产91久久性色tv| 亚洲欧美国内爽妇网| 能在线观看的日韩av| 亚洲性人人天天夜夜摸| 免费不卡视频| 欧美一区二区视频在线观看2020| 亚洲国产成人av好男人在线观看| 欧美日韩在线精品一区二区三区| 久久国产精品一区二区三区四区| 亚洲看片网站| 欧美高清视频www夜色资源网| 亚洲自啪免费| 亚洲精品国产精品乱码不99按摩 | 亚洲综合三区| 亚洲日本免费| 欧美成人在线免费视频| 欧美一区二区三区久久精品茉莉花 | 欧美一区二区三区四区在线观看地址 | 国产精品麻豆成人av电影艾秋| 久久婷婷丁香| 亚洲欧美偷拍卡通变态| 亚洲九九精品| 亚洲国产一成人久久精品| 久久久夜精品| 久久精品国产欧美激情| 亚洲欧美成人一区二区三区| 99视频精品在线| 欧美日韩在线三区| 奶水喷射视频一区| 久久精品视频免费| 欧美影院午夜播放|