HDU 4255 篩素數 BFS尋最短路徑長度

2021-06-17 19:54:10 字數 690 閱讀 8218

本題有乙個小trick,雖說給定的數的範圍是[1,10000],但有可能存在一條繞出100*100的矩陣(包含1-10000的數的矩陣)的從起點到達終點的路徑,比完全位於100*100矩陣(包含1-10000的數的矩陣)當中的從起點到達終點的最短路徑的長度還要短,於是,便要擴大矩陣,為特殊情況的搜尋另外開闢一條路。

#include #define ny i+dy[(dir+k)%4]

#define nx j+dx[(dir+k)%4]

const int n = 106;

const int m = 13000;

const int inf = (int)1e9;

const int dx[4] = ; // 0 down 1 right 2 up 3 left

const int dy[4] = ;

int a[n][n];

int dist[n][n];

int x[m], y[m];

int prm[m>>1], pn;

bool np[m];

void getprm()

}}int main()

{ getprm();

int flag = 1;

for(int i=0; i=0; k--) {

if(ny>=0 && nx>=0 && nx=0 && yk>=0 && xk

HDU 6069 素數篩法

思路 設 n p 1 p 2 p m n p 1 c 1 p 2 c 2 p m c m 則d n k kc 1 1 kc 2 1 kc m 1 d n c 1 1 c2 1 c m 1 則 d n k kc 1 1 kc 2 1 kc m 1 d n k kc 1 1 kc 2 1 k c m 1...

hdu 1973 bfs 素數判斷

題意 給出兩個四位數,現要改變第乙個數中的個,十,百,千位當中的乙個數 使它最終變成第二個數,要求這過程中形成的數是素數,問最少的步驟 題解 素數篩選 bfs sample input 3 1033 8179 1373 8017 1033 1033 sample output 6 7 0 注意第一位...

HDU 1973 BFS 素數打表

思路 先素數打表,把1到10005範圍內的素數找出來,然後把要輸入的兩個數當做字串輸入,然後進行廣搜 廣搜的思路就是,把每一位數都變化一下,存入佇列中,然後不斷的比較,就可以得出結果了!include include include include include include using nam...