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