SDUT 經典線型DP

2022-05-05 13:06:11 字數 2121 閱讀 6376

1001  即hdu 1003 max sum

狀態轉移方程 dp[i]=max(dp[i],dp[i-1]);沒這麼寫

是相鄰最大和的題,以前做過的題,陣列開小了,wa了4次,最後才發現,弱暴了

view code

#include

int num[100005];

int main()

else sum+=num[i];

if(max"

case %d:\n%d %d %d\n

",cas++,max,s,e);

}return

0;}

1002   即hdu 1081 to the max

先是1--n行列舉+一維的dp

view code

#include

#include

int num[105][105],ss[105];

int main()

int max=-99999;

for(int i=0;i0,sizeof(ss));

for(int j=i;jint t=0;

for(int k=0;kif(t<=0) t=ss[k];

else t+=ss[k];

if(t>max) max=t;}}

}printf("

%d\n

",max);

}return

0;}

1003   hdu 1025 constructing roads in jgshining's kingdom

不知怎麼的總是有tle的思路**,這題呢,經典的lis 題,

view code

#include

#define n 500005

int map[n],flag[n];

int main()

int low,hig,mid,top=1;

flag[1]=map[1];

for(int i=2;i<=n;i++)

flag[low]=map[i];

if(low>top) top++;

}printf("

case %d:\n

",cas++);

if(top==1)

printf("

my king, at most %d road can be built.\n\n

",top);

else

printf("

my king, at most %d roads can be built.\n\n

",top);

}return

0;}

1004  即hdu1058 humble numbers

做過的題了,自己做的思路 感覺定位在 列舉還是比較合適,不合主題~o_o

2 3 5 7  和 前 n-1 個數從大到小列舉

view code

#include

__int64 str[5845];

int main()

;str[1]=1;

for(int i=2;i<=5842;i++)}}

while(scanf("

%d",&n),n)

return

0;}

1005  即hdu 1080 human gene functions

先把字元處理成int ,然後就是 dp轉移方程 

grah[i][j]=max(grah[i-1][j-1]+score[ps[a[i-1]]][ps[b[j-1]]]

,max(grah[i][j-1]+score[4][ps[b[j-1]]],grah[i-1][j]+score[4][ps[a[i-1]]]));

經典啊,我的想法走歪了

view code

#include

#include

#include

#include

using

namespace std;

map ps;

int main(),,

,,};int n;cin>>n;

while(n--)

cout

0;}

經典DP問題

動態規劃5個經典問題解析 給定k個整數的序列,其任意連續子串行可表示為,其中 1 i j k。最大連續子串行是所有連續子序中元素和最大的乙個,例如給定序列,其最大連續子串行為,最大和為20。數塔問題 要求從頂層走到底層,若每一步只能走到相鄰的結點,則經過的結點的數字之和最大是多少?include s...

經典DP合集

1.數字三角形 數塔問題 dp入門題 有形如下圖所示的數塔,從頂部出發,在每一結點可以選擇向左走或是向右走,一起走到底層,要求找出一條路徑,使路徑上的值最大。樣例輸入 11 8 12 7 26 6 14 15 8 12 7 13 24 11 樣例輸出 86 13 8 26 15 24 狀態轉移方程 ...

sdut 1451 括號東東 DP

題意 中文.思路 pku有一道題,經典的括號匹配 區間dp 題目,那道題目是求的最長滿足條件的子串的長度,那裡的子串與這裡的子串條件不一樣。詳細 對於這個例子 pku的最長子串是12 而這裡是6 這裡我們是求的連續的滿足的子串。dp i 表示0到i的最長的滿足的連續的子串 則有 if str i d...