連續消去
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...