CSP第一次模擬 C 可怕的宇宙射線

2021-10-04 03:43:08 字數 1148 閱讀 4873

宇宙射線會在無限的二維平面上傳播(可看作乙個二維網格圖),初始方向預設向上。宇宙射線在發射出一段距離後**,向該方向左右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,甚至有全國第一的水平 但最可怕的是,它可以發出宇宙射線 宇宙射線可以摧毀人的智商,進行降智打擊 宇宙射線會在無限的二維平面上...