藍橋杯 演算法提高 天天向上

2021-10-08 10:25:53 字數 1034 閱讀 4873

資源限制

時間限制:1.0s 記憶體限制:256.0mb

問題描述

a同學的學習成績十分不穩定,於是老師對他說:「只要你連續4天成績有進步,那我就獎勵給你一朵小紅花。」可是這對於a同學太困難了。於是,老師對他放寬了要求:「只要你有4天成績是遞增的,我就獎勵你一朵小紅花。」即只要對於第i、j、k、l四天,滿足i6

1 3 2 3 4 5

參考思路

1、我們需要找到4天成績是遞增的,需要逐漸判定是否後一天成績大於前一天,直至滿足4天。如例中1 3 2 3 4 5,在判定第4天(成績為3)比第3天(成績為2)高後,需要判定從第4天開始遞增有多少種可能性。

2、如何依次計算遞增天數:

定義dp[i][j]為從第i天開始,遞增天數為j天的個數。即dp[2][3]表示從第二天開始,有3天遞增的個數,預設第一天符合遞增情況時,dp[2][3]相當於計算dp[3][2]、dp[4][2]和dp[5][2]之和,而不存在dp[5][2]。因此計算過程中需要即使判斷首先天數是遞增的,其次成績是遞增的,最後需要存在其可能性(如dp[5][2]不存在)。

由上可以很容易的推出

dp[i][j]= ∑dp[k][j-1] (k>i,a[k]>a[i])

//計算dp[i][j] 

for(

int i=n-

1;i>=

0;i--)}

}

3、計算4天成績是遞增的,即求出dp[i][4]的和。

#include

using

namespace std;

long

long dp[

2001][

5];int

main()

}}long

long res=0;

for(

int i=

0;i) res+

=dp[i][4

];cout

}

演算法提高 天天向上

問題描述 a 同學的學習成績十分不穩定,於是老師對他說 只要你連續 4 天成績有進步,那我就獎勵給你一朵小紅花。可是這對於 a 同學太困難了。於是,老師對他放寬了要求 只要你有 4 天成績是遞增的,我就獎勵你一朵小紅花。即只要對於第 i j k l 四天,滿足 i j k l 並且對於成績 wi w...

試題 演算法提高 天天向上 dp

問題描述 a同學的學習成績十分不穩定,於是老師對他說 只要你連續4天成績有進步,那我就獎勵給你一朵小紅花。可是這對於a同學太困難了。於是,老師對他放寬了要求 只要你有4天成績是遞增的,我就獎勵你一朵小紅花。即只要對於第i j k l四天,滿足i輸入格式 第一行乙個整數n,表示總共有n天。第二行n個數...

天天向上 冬天

最近發現自己越來越痛恨睡懶覺,尤其是週末睡懶覺。還記得以前一到週末恨不得能睡到吃中飯。誰要是敢打擾我睡懶覺,我跟誰急。而最近不知道從什麼時候開始,週末不再喜歡睡懶覺,不是不困,其實也很睏,但是總覺的挺浪費時間的,很多事情沒做一天一晃就過去了。有一種時不我待的嚴重的緊迫感。很多事情要做,多的有點不知道...