poj 1609 dp(堆積木能達到的最高層)

2021-06-28 11:34:37 字數 896 閱讀 2726

題意:給出一列數對 ,求出其最長的不減序列的長度。

思路:最簡單的思路是採用lis,dp實現,nlogn的複雜度(注意不減和遞增的區別,二分查詢的條件要進行改變)。網上看到針對此題的另一種思路,直接對資料進行dp:此題的資料範圍為1~100,對資料dp的複雜度為o(100*100)。

lis的**:

#include #include #include #define max(a,b) ((a)>(b)?(a):(b))

#define n 10005

struct points[n];

int n,dp[n];

int search(int x,int high)

return low;

}int lis()

return len+1;

}int cmp(const void *x,const void *y)

int main(){

while(scanf("%d",&n) && n){

int i;

memset(s, 0, sizeof(s));

memset(dp, 0, sizeof(dp));

for(i = 0;i

資料dp**:

#include #include #define max(a,b) ((a)>(b)?(a):(b))

#define n 105

int s[n][n],dp[n][n];

int n;

int main(){

while(scanf("%d",&n) && n){

int i,j,a,b;

memset(s, 0, sizeof(s));

memset(dp, 0, sizeof(dp));

for(i = 0;i

poj3342 poj2342 樹形dp入門

poj3342 最近做樹形dp,渣渣 成喳喳喳辣,真是不開森。還是適合做基礎入門題。題意 比較好理解。就是一棵樹,選m個點,兒子和父親不能同時選。問最多能選多少個 題目中說的是上級,當然我這裡省略就是用父親節點和孩子結點表示啦 其實dp的內容很好想,d i 0 表示第i個點不選的結果,d i 1 表...

POJ 3254,POJ 1185(狀態壓縮DP)

poj 3254 corn fields 我們可以用二進位制列舉第一行狀態,用1代表在這種植,0代表不種植,第一行確定了,第二行就可以根據第一行不斷累加。dp row state 代表第row行用state狀態時的方法數。如果這個state合法,則dp row state dp row 1 stat...

POJ 狀態壓縮DP專題

poj3254 狀態壓縮dp的入門題。純粹的二維遞推,還可以通過滾動陣列優化,但這裡並不需要。include include include using namespace std int m,n,f 13 1 12 intmap 13 int in bool check int j,int k i...