problem 787: 密室逃脫
time limit: 2000 ms memory limit: 524288 kb
problem description
小j被關在密室裡!
密室的構造是乙個h×w的棋盤,即有h行w列,第i行第j列的房間用ai,j 表示。
若ai,j =』#』,則該房間的門是鎖上的;
若ai,j =』.』,則該房間是可以自由進出的;
小j被困在ai,j =』s』的地方,該房間是可以自由進出的。
房間是四相鄰的,即(i,j)可以移動到(i+1,j),(i-1,j),(i,j-1),(i,j+1)
小j將通過如下方式逃脫密室,每一回合,她會按順序執行如下操作:
移動至多k 次,可以不移動,此時被鎖著的房間是不能夠進入的
選擇至多k個鎖著的房間開啟,可以不選擇任何房間,從此那些房間將一直可以自由進出。
出口在密室的四周,即第1行,第1列,第h行,第w列的所有房間,出口一開始可能是被鎖住的。
你需要用最少的回合移動到出口,輸出這個回合數。
資料範圍和子任務:
3≦h≦800
3≦w≦800
1≦k≦h×w
ai,j 是 『#』 『.』 『s』 中的一種,有且僅有乙個ai,j 為s
subtask1(30分):h≦4,w≦4;
subtask2(10分):不存在ai,j =#
subtask3(10分):不存在ai,j =.
subtask4(50分):無特殊限制
input
第一行讀入三個整數h,w,k
接下來h行,每行w個字元,表示ai,j。
output
輸出一行乙個數,表示小j最少要用多少回合逃出密室。
sample input
【樣例輸入1】
333
#.##s.
###
【樣例輸入2】
333
####s#
###
【樣例輸入3】
772
#######
#######
##...##
###s###
##.#.##
###.###
#######
sample output
【樣例輸出1】
【樣例輸出2】
【樣例輸出3】
【樣例解釋】
對於樣例1:
小j可以在乙個回合內移動到(1,2)
對於樣例2:
小j第乙個回合不能移動,但她解鎖了房間(1,2),然後她在第二個回合移動到(1,2)逃離密室。
problem source
dhr一開始理解錯題意
題意:
小j將通過如下方式逃脫密室,每一回合,她會按順序執行如下操作:
移動至多k 次,可以不移動,此時被鎖著的房間是不能夠進入的
選擇至多k個鎖著的房間開啟,可以不選擇任何房間,從此那些房間將一直可以自由進出。
說明乙個回合中可以有兩種操作
乙個回合走的k次可以由前一回合解鎖
所以路徑對答案沒有影響
所以走直線到邊界最優
我們先走k次(一回合)
用這一回合走的點更新答案
可以用bfs實現
時間o(n*m)
比賽時看出是搜尋題
以為要走奇奇怪怪的路線
找不到結論就做其他題去了
沒能簽到
有點虧啊
[1]atcoder grand contest 014做題記錄
[2]cs的比賽總結
#include
#include
#include
#include
#include
#define n 810
#define inf 2147483647
using
namespace
std;
int dx[4]=,dy[4]=,n,m,k,ans,sx,sy,num,u,v;
bool a[n][n],b[n][n];
char ch;
struct node;
queue
q;void bfs()
num=min(min(n-x,m-y),min(x-1,y-1));
num=(num-1)/k+1;
ans=min(ans,num);
for(int i=0;i<4;i++));}}
}}int main()}}
if(sx==1||sx==n||sy==1||sy==m)
ans=inf;
q.push((node));
bfs();
printf("%d\n",ans+1);
}
GFOJ problem468 出去玩 解題報告
題目 給出一棵小於n個節點的樹,和m個詢問,對於每個詢問,有兩個點,求點a到點b的最短距離,其中 n,m 40000 在這裡講一下倍增lca演算法 雖然說暴力搜尋也可以過 f i j 表示 從點i開始,向上2 j個點的位置,由於這道題帶權,再用v i j 用相同的方法表示權值,再記錄深度d i 於是...
唐僧情史 7 8
七 孫悟空是個詩人,我指的是他的生活態度。從本質上,他是乙隻浪漫多情的猴子,對世界無比溫柔,但看上去卻象個 他成佛的那一刻眼含熱淚,渾身顫抖。如來笑著問 你這頑皮的猴子,哭什麼?當時諸天神佛都在,悟空突然放聲大哭,誰都勸不住。只有我知道,那才是真實的孫悟空,乙隻軟弱的 自卑的猴子,乙隻渴望愛情的猴子...
7 8 超速判斷
7 8 超速判斷 10 分 模擬交通警察的雷達測速儀。輸入汽車速度,如果速度超出60 mph,則顯示 speeding 否則顯示 ok 輸入格式 輸入在一行中給出1個不超過500的非負整數,即雷達測到的車速。輸出格式 在一行中輸出測速儀顯示結果,格式為 speed v s,其中v是車速,s或者是sp...