搜尋 貪心 盤古之心

2021-06-08 07:39:14 字數 2003 閱讀 5929

1. 盤古之心(maze.pas/c/cpp)

【題目描述】

蒟蒻暮雨、今夕喜歡玩一款名叫仙劍的遊戲,仙劍1、2、3、4、5對他來說都毫無難度,於是他開始挑戰傳說中的《仙劍奇俠傳3外傳——問情篇》,說是問情篇,其實網上大家都是叫的「問路篇」,其中的迷宮怎乙個**了得……

好在暮雨、今夕是這方面的高手,成功攻克了乙個又乙個的難關,眼看就要結束了,他來到了乙個名字叫做「盤古之心」的地方,這個迷宮簡直是**,它分了很多層,每一層有很多的出口,很多的機關,通向其他層(第一層可能到2、3、4、5、6層這種),最終的目標是從第一層走到最後一層,而且有些地方必須開機關才能過,甚至有可能機關不在當前層……暮雨、今夕奮鬥了一下午,從1層走到了5層(囧)。

眼看著就要打最終boss了,暮雨、今夕非常著急,想請你幫個忙。

為了減小難度,現在把地圖抽象為乙個矩陣,矩陣中只有乙個入口,記為2,只有乙個出口,記為3,可以走的地方記為0,不能走的地方記為1,機關有n個,都記為4,可以向上下左右4個方向移動,人一出來就在入口,現在需要你找出一條最短的通道通向出口,並輸出可能的最小步數(預設每次移動的步數為1)。

【友情提示】

1、不出發所有的機關就不能通往下一層

2、根據常識,機關一般都在某條路的盡頭,你不可能順路就開啟機關……

3、開掛是不允許的,所以不能穿牆或者在牆上走

4、預設地圖上的怪都在km命令下灰飛煙滅,不用考慮打怪問題

5、這不是以前常見的走迷宮,這是有現實意義的迷宮,路是一條一條的,有岔路,岔路的盡頭是寶箱或者機關,不會出現一坨路,即不可能出現4個及其以上的0或2在一坨……

【輸入格式】

輸入檔案maze.in,第一行為三個整數a,b,n,表示矩陣的長和寬,以及機關總數,接下來的幾行,為乙個n*m的矩陣,描述見題中資訊

【輸出格式】

輸出檔案maze.out,只有一行,為最小步數,無法到達終點的話,就輸出「我勒個去!」(不含引號)

【輸入樣例】

4 4 2

4 0 1 1

1 0 2 0

1 0 1 0

3 0 1 4

【輸出樣例】

13【樣例解釋】

路徑:→↓↓↑↑←←↑←→↓↓↓←(走到終點的一瞬間就到達另一層了,所以不算在步數裡面)

【資料範圍】

對於60%的資料,有0對於100%的資料,有0

標程方法是貪心,因為路的寬度是1,所以我們找到直徑,然後算出所有的機關到直徑的距離,加起來就是答案。

我用的搜尋,狀態壓縮記錄開關的情況,大於32,因此要用long long.

有點麻煩的是標記,我用的set,然而一開始一直不對,因為set的比較函式寫錯了,因為步數是不納入比較的,否則不可能有相同的狀態。

手做了幾個資料改對了。

#include #include #include #include long map[60][60];

long sx;

long sy;

long tx;

long ty;

struct sta

do rs=(rs<<3)+(rs<<1)+tmp-'0';

while (isdigit(tmp=getchar()));

return sgn?rs:-rs;

}int main()

if (map[i][j] == 3)

if (map[i][j] == 4)

}} sta now;

sta nxt;

long l = 0;

long r = 0;

r ++;

que[r].x = sx;

que[r].y = sy;

que[r].step = 0;

que[r].key = 0;

used.insert(que[r]);

while (l != r)

if (used.find(nxt)==used.end())

}} printf("我勒個去!");

return 0;

}

站內搜尋 Lucene 盤古分詞

為了方便的學習站內搜尋,下面我來演示乙個mvc專案。1.首先在專案中 新增引入 三個程式集和 dict 資料夾,並新建乙個 分詞內容存放目錄 2.建立search控制器,並轉到index介面寫入如下內容 ps vs有問題,波浪號由他去吧,後台語句 建立索引語句 public actionresult...

站內搜尋 分詞(二元 盤古)

一般的 中都有站內搜尋,如果使用like去做,效率就會很低。所以,lucene.net 搜尋引擎核心 就會被大家所採用。一 分詞 分詞是核心的演算法,lucene.net本身是不提供分詞演算法的。示例 analyzer analyzer new panguanalyzer 盤古分詞 analyzer...

塔 貪心 搜尋

小 a 想搭乙個體積不超過 m 的塔,他有各種大小的立方積木,比如邊長 為 a 的積木,體積為 a 3,現在小 a 需要你給乙個 x,每次小 a 會用乙個體積 不超過 x 的最大積木,依次到搭好為止,現在他想最大化積木的個數,同時在 積木個數最大的情況下使 x 最大。輸入描述 一行乙個數 m 輸出描...