訓練第三週之dp習題

2021-07-16 01:16:02 字數 2322 閱讀 3443

個人感覺做dp題目就是求什麼就設什麼,dp[i]陣列就是所求,然後找出子問題,寫出狀態轉移方程就差不多出來了這個題目思路很簡單,就是求子串最大和。但是就是要記錄開頭結尾還有如果相等記錄第乙個,讓我吃盡了苦頭。

#include

#include

#include

#include

using

namespace

std;

int a[100005],dp[100005];

int rem[100005],s,k;

int main()

if(max1];

m=i;

}rem[s++]=i;//記錄最大和子串

//printf("%d %d\n",j,m);

}else

}/*for(i=0;iif(j!=m)

else

//j等於m說明最大值子串只有乙個數

k++;

}while(k<=t);

}

這題意思是要求質因數只有2,3,5,7的數的編號。本來我是從1到2000000000,是質因數的就記錄,發現爆時間了,後面看題解才知道可以直接求第1個到第5842個質因數。dp[i]指第i項總可以由前i-1項中的某一項與2,3,5,7相乘得到,且為大於第i-1項的最小值。我隱隱覺得,dp[i]就是求什麼就設成什麼。

#include

#include

#include

#include

#include

using namespace std;

long long f[6000];/*第i項總可以由前i-1項中的某一項與2,3,5,7相乘得到,且為大於第i-1項的最小值*/

int way[4]=;

int main()

}//printf("%d\n",f[1000]);

while(scanf("%d",&n)!=eof&&n)

if(n%10==2&&n%100!=12)

if(n%10==3&&n%100!=13)

printf("th humble number is %d.\n",f[n]);

}return

0;}

這題我不知道是不是用的dp,就是判斷是否有系統目前高度大於敵方飛彈高度,如果有就用最相近的那個去攔截,如果沒有就再加一台系統

#include

#include

#include

#include

int s;

int f[10005];

int main()}}

if(flag)

else

}printf("%d\n",s);

}return

0;}

這題我不用dp能得出結果就是ac不了,我也發現漏洞了,解決不了就只能看題解了。。。題解比較巧妙,將每種積木直接變成三種積木,每種只有乙個底面乙個高,再排序,就一下簡化了很多,再根據狀態轉移方程,放i個積木就是放前i-1個中底面比第i個底面大的加上第i個的高的最大高度

#include

#include

#include

#include

using

namespace

std;

struct dimensions

dim[100];

int dp[100];

int t=0;

typedef

struct dimensions d;

bool cmp(d a,d b)

int main()

n=j;

sort(dim,dim+n,cmp);//將積木按底面從大到小排序

maxdp=0;

//cout=0;j--)

if(dp[i]>maxdp)//dp[i]為放第i個積木能達到的最大高度

maxdp=dp[i];

}cout

<<"case "

<<++t<<":";

cout

<<" maximum height = "

#include

#include

#include

#include

using

namespace

std;

int dp[50];//從n到i的次數

int main()

}printf("%d\n",dp[1]);

}return

0;}

訓練第三週之dp 揹包訓練

題目 有n件物品和乙個容量為v的揹包。第i件物品的費用是w i 價值是v i 求解將哪些物品裝入揹包可使價值總和最大。分析 每種物品都有兩種狀態,放或者不放,那麼只要比較放所得的價值與不放揹包內原有價值就能得到最大價值 二維陣列 f i j 表示前i件物品放入容量為j的揹包可以獲得的最大價值 for...

第三週 習題

1奇偶個數 5分 題目內容 你的程式要讀入一系列正整數資料,輸入 1表示輸入結束,1本身不是輸入的資料。程式輸出讀到的資料中的奇數和偶數的個數。輸入格式 一系列正整數,整數的範圍是 0,100000 如果輸入 1則表示輸入結束。輸出格式 兩個整數,第乙個整數表示讀入資料中的奇數的個數,第二個整數表示...

第三週訓練總結(補充貪心)

例題 有n頭牛,分別給出可以承受的光照範圍,有m瓶防曬霜,可以將溫度控制在k度,但只有有限瓶,求最多可以讓多少頭牛曬陽光 先按牛所承受的溫度公升序排序,防曬霜公升序排序 如果防曬霜大於所承受最低溫,放入佇列 priority queue,greater q 再一次比較放入佇列的防曬霜,對應的防曬霜有...