HDU5693 D Game 百度之星2A

2021-07-12 01:09:50 字數 1597 閱讀 3606

連續消去

k 個數,可以表示為消去了若干次

2個數和消去了若干次

3 個數。即k=

2∗i+

3∗j,那麼可以消數字就變成了,每次可以消

2 個,或者

3個。 f[

i][j

] 代表i.

..j 這段數字可以全部消掉,那麼這個狀態可以由f[

i][k

]and

f[k+

1][j

] ,f[

i+1]

[j−1

]and

mark

[a[i

]−a[

j]] 和f[

i+1]

[k−1

]and

f[k+

1][j

−1]a

ndma

rk[a

[i]−

a[k]

]and

a[i]

−a[k

]==a[

k]−a

[j] 得到。

所以最終的dp

[i]=

max(

dp[i

−1],

dp[k

]+f[

k+1]

[j]?

j−k:

0)複雜度:o(

n3)

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

typedef

vector

vi;

typedef pair pii;

#define for(i,x,y) for(int i = x;i < y;++ i)

#define ifor(i,x,y) for(int i = x;i > y;-- i)

#define pb push_back

#define mp make_pair

#define fi first

#define se second

const

int maxn = 330;

int n,m,a[maxn],dp[maxn],f[maxn][maxn];

map hs;

void work()

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

for(j,1,n)

dp[j] = dp[j-1];

for(i,1,j) if(f[i][j]) dp[j] = max(dp[j],dp[i-1]+j-i+1);

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

}int main()

return

0;}

題解 hdu5693 D Game 區間DP

題目鏈結 區間dp好題,把區間dp的基本操作都用上了。狀態轉移方程很多,見 吧 include include include includeusing namespace std const int n 310 int t,n,m,a n d,dp n n f n bool can n n map...

android 百度sdk之 百度定位

步驟 1.控制台建立應用。2.sha1獲得 注意 debug 版本和release不同。debug版本獲取 首先 到c user android目錄下,我的是 c users admin android 其次 在這個目錄下,用cmd.輸入keytool v list keystore debug.k...

百度之星之J 百度的新大廈

時間限制 1000ms 記憶體限制 65536kb 描述 輸入 輸入的第一行包括兩個整數,分別為n和m 1 n 1,000,000,1 m 2,000 表示按電梯按鈕的次數和大廈中的電梯數量。接下去的m行,每行包括2個由空格分割的數字,分別表示了提供的m個電梯中的某乙個的上行按鈕上公升一次的層數ui...