宇宙射線會在無限的二維平面上傳播(可看作乙個二維網格圖),初始方向預設向上。宇宙射線在發射出一段距離後**,向該方向左右45。**出兩條宇宙射線,同時威力不變!宇宙射線會**n次,每次**後前進ai個單位長度。
輸入第一行包含乙個正整數n(n<=30)表示宇宙射線會**n次
第二行包含n個整數,a1,`a2,…,an,第i個數ai(ai<=5)表示第i次**的宇宙射線會在原方向走多少單位長度。
44 2 2 3
輸出乙個數ans,表示宇宙射線走過的單位數。
該題的難點在與要對射線**時路徑上重複點的去除。
在這裡建立了乙個bool的二維陣列note來標記該點是否走過,用於去重。因為ai<=5,n<=30,故陣列大小300300已經夠用,在這裡取400400。
模擬宇宙射線在二維平面上的行進路線可以使用bfs,也可以使用dfs,在這裡使用了bfs的方法。將宇宙射線的每一次**,看作是bfs向外的一次擴充套件。在這裡,可建立乙個三維陣列,各維含義分別為x座標,y座標,方向,用來標記下一層擴充套件的點,如果這一點在陣列中已經被標記過,則說明這一條路徑在之前bfs的過程中已經走過,可以直接捨棄此條路徑。如此,可以大大降低時間複雜度。
#include
#include
#include
using
namespace std;
struct point
point
(int thex,
int they,
int thelength)};
int dx=
;int dy=
;bool vis[
400]
[400];
bool note[
400]
[400][
8];queueq;
intmain()
}if(!note[now.x]
[now.y]
[(before +1)
%8])
if(!note[now.x]
[now.y]
[(before +7)
%8])
} number = temp;
} cout << count << endl;
return0;
}
第一次CSP模擬 C 可怕的宇宙射線
眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著一種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀人的智商,進行降智打擊!宇宙射線會在無限的二維平面上...
第一次csp模擬賽B
題意 乙個人連續n天去買東西,給出n個資料,為之後n天每天要買的東西的數量,如果能按照這個資料購買,則成功,輸出 yes 不能按照給定的資料購買,則輸出 no 店家有兩種購買方式,一 一次性購買兩個。二 今天買乙個,送一張券留著明天用。明天手裡的券必須用完,如有剩餘則失敗 其中兩種方式每天都可以購買...
CSP模擬 題目C 可怕的宇宙射線
眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著 種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平 但最可怕的是,它可以發出宇宙射線 宇宙射線可以摧毀人的智商,進行降智打擊 宇宙射線會在無限的二維平面上...