簡單搜素題集

2021-07-04 10:25:34 字數 2203 閱讀 6338

不解釋

#include using namespace std;

#define ll long long

#define rep( i , a , b ) for ( int i = a ; i <= b ; ++ i )

#define clr( a , x ) memset ( a , x , sizeof (a) );

#define re freopen("1.in","r",stdin);

#define we freopen("1.out","w",stdout);

#define mod 10009

#define bug(x) cout<<#x<<":"<<(x)int s;

int ans[21],vis[21];

int tol;

void dfs(int u,int cnt)

}while(cin>>s,s)

return 0;

}

此題巨坑,題意也很難看懂。

1.從(0,0)點走到(n,m),四個方向(或者不走),每次走或不走都消耗1能量,求最少消耗。

2.有很多炮台,在各自的x,y處向某個方向間隔t秒發一次速度為v的炮,炮打到其他炮台就消失(炮消失但炮塔不消失),炮炮之間可以穿越,人不能碰到炮台。

3.炮台的攻擊只在炮終點的同一時刻起效,即可以想象為炮是從拋物線那樣飛下來的,只有在同一點同一時刻才起效果。

坑點在哪呢?在座標系。按照它的座標系而言,輸入的炮台x,y是要反過來的(難怪看別人部落格都是n和m跟題目的反過來)我只反了輸入的炮台xy就行了。

陣列要開bool,開int會mle。

解:正常bfs,難點在判斷某點某時刻是否會被炮打中。看起來是動態圖,但可以通過預處理變成靜態,即我們是知道哪些點在哪些時刻是危險的。

兩個for迴圈,外層為同條線的座標(範圍是碰到其他炮台或者座標上下限),內層為時間,比如:

if(pao[i].dir == 'e')

}int curtime = 1;

for(int j = x+v;j<=stop;j+=v,curtime++)

}}

#include using namespace std;

#define ll long long

#define rep( i , a , b ) for ( int i = a ; i <= b ; ++ i )

#define clr( a , x ) memset ( a , x , sizeof (a) );

#define re freopen("1.in","r",stdin);

#define we freopen("1.out","w",stdout);

#define mod 10009

#define bug(x) cout<<#x<<":"<<(x)<= 0 && x <= n)

if(y >= 0 && y <= m)

return true;

return false;

}bool fire[maxn][maxn][1002]; //該點該時刻是否危險

bool cast[maxn][maxn];

void init()

}int curtime = 1;

for(int j = x+v;j<=stop;j+=v,curtime++)

}}else if(pao[i].dir == 'w')

}int curtime = 1;

for(int j = x-v;j>=stop;j-=v,curtime++)

}}else if(pao[i].dir == 'n')

}int curtime = 1;

for(int j = y-v;j>=stop;j-=v,curtime++)

}}else if(pao[i].dir == 's')

}int curtime = 1;

for(int j = y+v;j<=stop;j+=v,curtime++)}}

}}int bfs()

}return -1;

}int main()

if(cast[n][m])

init();

int ans = bfs();

if(ans == -1)

cout<<"bad luck!"<

3D逃亡 簡單搜素練習2

poj2251 bfs 3d 解題報告 1.題意簡單,就是個3d的搜尋,從s到e輸出距離。依照題意不妨bfs搜尋。那好,搜尋退出條件是當前狀態非法,或者到達e。2.狀態?直接map l r c 就好了。為了方便輸入,故使用map l r c 而非 r c l 依照題意,很容易看出不需要定義乙個標記陣...

深度搜素 搜尋巢狀

搜尋問題,擴充套件節點的時候會iterate乙個link集合,一般就是乙個for 迴圈,但有的時候,這個集合並不能直接得到,而是另乙個搜尋問題,比如n個數分k組問題的一種解法是 問題分成k個步驟,每個步驟確定乙個組,具體乙個組可分的方案的candidate集合就不是直接可以用for來iterate的...

檔案的搜素命令

是通過path環境變數到該路徑內查詢可執行檔案,因此基本功能是尋找可執行的檔案查詢可執行檔案 查詢命令路徑 查詢命令別名 b 只查詢二進位制檔案 m 只查詢在說明檔案manual路徑下的檔案 依賴於事先構建好的索引庫,定時更新索引庫 updatedb 查詢速度快,模糊查詢 b 只匹配路徑中的基名 c...