一道搜尋題寫了好久沒寫出來
一直拖到現在才補起來
題目不難 只是有一些地方以前沒注意過
現把幾點要注意的指出來
一:因為每一次移動可能耗時1也可能耗時2 所以不能用單純的佇列 需要用優先順序佇列
二:因為氧氣罐數量的不同而導致狀態的不同 需要三維的陣列來記錄狀態
三:為了**的簡潔 把v陣列的判斷和賦值操作放到了取出狀態的時候 而不是放在加入狀態的時候
四:注意從一而終 要麼在進入房間之前結算 要麼在出房間之前結算 不能二者結合 乙個寫搜尋題易犯的錯誤
五:氧氣罐最多5個 乙個小小需要注意的地方
#includeusing namespace std;
const int n=105;
int n,m;
struct node
bool operator <(const node &r)const
};char mp[n][n];
bool v[n][n][10];
int d[4][2];
int bfs(int i,int j)
else if(mp[tx][ty]=='b')
else if(mp[tx][ty]=='.'||mp[tx][ty]=='s')
else if(mp[tx][ty]=='p')
else if(mp[tx][ty]=='#'&&tp.d)}}
}return -1;
}int main()
}printf("%d\n",ans);
}return 0;
}
acm 2018北京網路賽B題
這個題的題意就是給n n 10個字串,長度不超過8,但是n個字串每乙個都可以組成乙個環,然後求這n個字串的最長公共子串行 我的做法就是使用位運算遍歷。朱學長要打我.就是每一位就是乙個0 1,來遍歷,這樣就比for迴圈遍歷快很多,然後分別使用map來存同時要避免在每個字串中子串出現次數大於1,然後再用...
2015北京網賽 G Boxes bfs
題目大意 給你n n 8 個互不相同的數,問進行多少次操作後能讓這些數變成公升序,無法變成就輸出 1,具體操作是,每個數只能每次只能移動到與他相鄰的空位或者比他大的數上。如 2,1,3 可以通過 2,1 3 2,1 3 1 2 3 1,2,3 這4次變換達到。思路 就是狀態壓縮之後的bfs了,用乙個...
icpc 北京網路賽 1006 貪心演算法
網路賽結束,看了大神的 以後才寫出來的,這是一道貪心演算法,選區域性最優方案 就是相鄰兩個點不能直接到達做特別討論。易證 如果兩個點不能直接到達,那麼每次讓青蛙走兩步到達 l 1 的距離是最優選擇,如果現在青蛙的位置是now 那麼到達now 的那一步走了step,然後對now 後面的那個點進行討論 ...