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

2021-10-04 04:05:55 字數 1544 閱讀 9842

眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著一種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平!但最可怕的是,它可以發出宇宙射線!宇宙射線可以摧毀人的智商,進行降智打擊!宇宙射線會在無限的二維平面上傳播(可以看做乙個二維網格圖),初始方向預設向上。宇宙射線會在發射出一段距離後**,向該方向的左右45°方向**出兩條宇宙射線,同時威力不變!宇宙射線會** 次,每次**後會在**方向前進ai個單位長度。現在瑞神要帶著他的小弟們挑戰苟狗,但是瑞神不想讓自己的智商降到普通本科生zjm那麼菜的水平,所以瑞神來請求你幫他計算出共有多少個位置會被"降智打擊"。

輸入說明

輸入第一行包含乙個正整數 n(n<=30),表示宇宙射線會**n 次第二行包含n個正整數a1,a2···an ,第ai(ai<=5)個數表示第 i次**的宇宙射線會在它原方向上繼續走多少個單位長度

輸出說明

輸出乙個數ans ,表示有多少個位置會被降智打擊

樣例輸入

44 2 2 3

樣例輸出

39思路

本題利用dfs剪枝的方式做。首先要確定這個二維平面的最大範圍,按乙個方向來看不會超過30×5=150,所以我們二維陣列開成[300][300]就夠用了。再設定座標的偏移量dx,dy,我們假設方向從(0,1)即y軸的正方向開始,按照乙個八邊形順時針的方向安排dx,dy,這樣子的話dx+1,dy+1表示順時針**45°的那條射線,dx+7,dy+7則表示逆時針**的那條射線,dfs記錄當前還沒有被標記的的位置。注意across陣列的目的是判斷在當前這一深度,這個點,這個方向是否已經被訪問過。

**

#include

using

namespace std;

struct point};

int num=0;

int dx[8]

=;int dy[8]

=;//從y軸的正半軸方向開始,按順時針的八邊形順序安排dx,dy

bool map[

1000][

1000]=

;bool across[

1000][

1000][

31][8

]=;//8個方向,**30次最多

void

dfsmap

(point p,

int*a,

int d,

int i,

int n)

} i++

;dfsmap

(p,a,

(d+1)%

8,i,n)

;dfsmap

(p,a,

(d+7)%

8,i,n)

;//當時出錯是因為沒有加餘數而超出了範圍

}int

main()

point p

(500

,500);

//從map圖的中心開始

dfsmap

(p,a,0,

0,n)

; cout

}

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

宇宙射線會在無限的二維平面上傳播 可看作乙個二維網格圖 初始方向預設向上。宇宙射線在發射出一段距離後 向該方向左右45。出兩條宇宙射線,同時威力不變!宇宙射線會 n次,每次 後前進ai個單位長度。輸入第一行包含乙個正整數n n 30 表示宇宙射線會 n次 第二行包含n個整數,a1,a2,an,第i個...

第一次csp模擬賽B

題意 乙個人連續n天去買東西,給出n個資料,為之後n天每天要買的東西的數量,如果能按照這個資料購買,則成功,輸出 yes 不能按照給定的資料購買,則輸出 no 店家有兩種購買方式,一 一次性購買兩個。二 今天買乙個,送一張券留著明天用。明天手裡的券必須用完,如有剩餘則失敗 其中兩種方式每天都可以購買...

CSP模擬 題目C 可怕的宇宙射線

眾所周知,瑞神已經達到了cs本科生的天花板,但殊不知天外有天,人外有苟。在浩瀚的宇宙中,存在著 種叫做苟狗的生物,這種生物天生就能達到人類研究生的知識水平,並且天生擅長csp,甚至有全國第一的水平 但最可怕的是,它可以發出宇宙射線 宇宙射線可以摧毀人的智商,進行降智打擊 宇宙射線會在無限的二維平面上...