藍橋杯第二次訓練賽題解

2021-10-15 00:00:24 字數 2755 閱讀 3781

題解計算斐波那契數列的值,n最大為45所以不用高精度直接用long long肯定可以存下。

題解每一次都面臨要上幾次台階的問題,一共有三種選擇。使用深度優先搜尋來做這道題。每乙個傳遞的引數n是還剩幾個台階,只有最後所有的台階都走完了才能算一種方案。遞迴return的條件是n為0或者是負數的情況。

題解每一次將繩子分為三段這三段必須都是整數,選取中間的一段繼續分割。一直分割小於等於2m,問這個繩子最長是多少。

反向思考給定乙個繩子讓運算元最多那麼最短繩長為1m,然後最長繩長等於第二長的繩長或者只比第二長繩子多一。遞推公式為:f

ff(x

xx)=max,整理後得出f

題解這題考慮的是最差情況,即每道題的正確答案都是最後乙個選項,所以第i

ii題選a

ia_i

ai​次才能選到正確答案.所以每一次都需要a

ia_i

ai​-1次試錯。而每一次試錯都需要把前面的i

ii-1次正確答案重新選擇一遍。所以遞推公式為:

f

if_i

fi​=fi−

1f_fi−1​+a

ia_i

ai​+(a

ia_i

ai​-1)*(i

ii-1)

f

if_i

fi​表示第i

ii次選出正確答案的選題次數。

ans +

= a[i]

+(a[i]-1

)*(i -1)

//ans代表前i - 1道題的選擇總數

題解對於每個格仔,能走的路徑只有下和右,所以 對於每個格仔路徑數為上和左路徑數的和。但是由於有障礙所以有些點需要特判一下。dp [i

ii][j

jj]為到達(i

ii,j

jj)點的方案數,如果這個點是障礙點dp[i

ii][j

jj]=0,如果不是障礙點則滿足如下方程:dp[i

題解這道題的題解點這裡,絕對不是我懶的寫的原因

關於第二次訓練賽

第二次訓練賽甚至比第一次還要差,開始做的時候,因為在調並查集的題目,一時忘了比賽開始時間,這又導致了在開始便就輸在了起跑線上,接下來看a,20分鐘後想到了bfs,不過和p商量後,發現他在吳澤軍的書上找到了原題!用優先佇列做的,感覺很好,在理解了之後,此時時間差不多乙個小時了,開始敲,當然不想用書上的...

第二次周賽題解

e題,不懂的看新生訓練題解 includeint main return 0 d題,乙個預處理就ok includeint a 1000005 int main int t scanf d t while t return 0 c題,打表找下規律,會發現是以1 1 2 0 2 2 1 0為迴圈 in...

第二次周賽題解

位址 a 組成三位數 列舉第乙個數,第二個數第三個數根據關係算出來,然後判斷是否合法就行了。include define rep i,a,b for int i a i b i using namespace std int vis 10 bool fun int n return true boo...