眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著一種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀人的智商,進行降智打擊! 宇宙射線會在無限的二維平面上傳播(可以看做乙個二維網格圖),初始方向預設向上。宇宙射線會在發射出一段距離後**,向該方向的左右45°方向**出兩條宇宙射線,同時威力不變!宇宙射線會**n次,每次**後會在**方向前進a_i個單位長度。 現在瑞神要帶著他的小弟們挑戰苟狗,但是瑞神不想讓自己的智商降到普通本科生那麼菜的水平,所以瑞神來請求你幫他計算出共有多少個位置會被"降智打擊"。
輸入:輸入第一行包含乙個正整數n(n<=30),表示宇宙射線會**n次
第二行包含n個正整數a1…ai,第i個數ai表示第i次**的宇宙射線會在它原方向上繼續走多少個單位長度。
輸出:輸出乙個數ans,表示有多少個位置會被降智打擊
樣例:input:
44 2 2 3
output:
39樣例解釋說明:
由題目簡單計算可得,按最壞情況計算,射線傳播範圍也僅限於300*300的平面範圍內,並不是很大。
所以,我們可以構造一張「圖」,從中心開始發射,模擬**過程,最後遍歷圖確定覆蓋區域。
使用類似於迷宮問題bfs解法的思想,從起點開始發射,在**過程中,對覆蓋到的點進行標記,同時進行記憶化搜尋,在相同位置、相同**情況下,要及時停止,從而降低複雜度。
#include
int vis[
330]
[330][
35][8
],//記錄射線覆蓋區域,表示(x,y)在第cnt次**,d方向延伸
mp[330]
[330
],a[35]
, n,ans;
int dir[8]
[2]=
,,,,
,,,}
;//八個**方向
void
dfs(
int x,
int y,
int cnt,
int d)
if(cnt
//繼續**
dfs(x,y,cnt+1,
(d+1)%
8),dfs
(x,y,cnt+1,
(d+7)%
8);}
intmain()
C 可怕的宇宙射線(Week4CSP模擬)
眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著一種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀人的智商,進行降智打擊!宇宙射線會在無限的二維平面上...
Week4 CSP模擬 C 可怕的宇宙射線
過程總結 眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著一種叫做苟狗的生物,這種生物天 生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀 人的智商,進行降智打擊!宇宙射線會在無...
week4 CS C 可怕的宇宙射線
問題描述 宇宙射線會在無限的二維平面上傳播 可以看做乙個二維網格圖 初始方向預設向上。宇宙射線會在發射出一段距離後 向該方向的左右45 方向 出兩條宇宙射線,同時威力不變。宇宙射線會 n次,每次 後會在 方向前進ai 個單位長度。計算出共有多少個位置會被打擊。輸入 輸入第一行包含乙個正整數n n 3...