1001 即hdu 1003 max sum
狀態轉移方程 dp[i]=max(dp[i],dp[i-1]);沒這麼寫
是相鄰最大和的題,以前做過的題,陣列開小了,wa了4次,最後才發現,弱暴了
view code
#include1002 即hdu 1081 to the maxint num[100005];
int main()
else sum+=num[i];
if(max"
case %d:\n%d %d %d\n
",cas++,max,s,e);
}return
0;}
先是1--n行列舉+一維的dp
view code
#include1003 hdu 1025 constructing roads in jgshining's kingdom#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;}
不知怎麼的總是有tle的思路**,這題呢,經典的lis 題,
view code
#include1004 即hdu1058 humble numbers#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;}
做過的題了,自己做的思路 感覺定位在 列舉還是比較合適,不合主題~o_o
2 3 5 7 和 前 n-1 個數從大到小列舉
view code
#include1005 即hdu 1080 human gene functions__int64 str[5845];
int main()
;str[1]=1;
for(int i=2;i<=5842;i++)}}
while(scanf("
%d",&n),n)
return
0;}
先把字元處理成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...