51 nod 1021 石子歸併
模板題,敲就完事了,注意一下這種狀態轉移方程有個四邊形的優化(時間)
#include #includeview code#include
using
namespace
std;
intn;
const
int maxn=1e3+5
;int
f[maxn][maxn], s[maxn][maxn], a[maxn], sum[maxn];
void
solve_sim()
}void
solve_opt()
for(int len=1; len)
for(int i=1; i<=n-len; i++)
}f[i][j]+=sum[j]-sum[i-1
]; }
}int
main()
solve_sim();
solve_opt();
cout
<1][n]<
return0;
}
poj 3186 喂牛
題意:給你n個數字.....每次你可以取出最左端的數字或者取出最右端的數字,一共取n次取完。假設你第i次取的數字是x,你可以獲得i*x的價值。求總價值之和最大。
題解:區間dp問題,子問題:在dp[i][j]這段區間所獲得的最大價值;
劃分:取左邊或者取右邊,這個是從底往上推的,初始化要注意,
方程:f[i][j]=max(f[i+1][j]+(n-len)*a[i], f[i][j-1]+(n-len)*a[j])
#include #includeview code#include
#include
using
namespace
std;
const
int inf=0x3f3f3f3f
;const
int maxn=2e3+5
;int
f[maxn][maxn], a[maxn];
intmain()
for(int len=1; len)
for(int i=1; i<=n-len; i++)
cout
<1][n]<
return0;
}
poj 2955 括號匹配
題意:給一串字元,求可以匹配的括號個數,有(), ,這2種括號
題解:區間dp問題,子問題:在區間i,j上的最大可匹配的括號數目;
劃分:首尾匹配, 首尾不匹配,當首尾不匹配的時候必然可以由2段區間合併來(想一下),列舉所有的子區間組合(分割點);
#include #includeview code#include
using
namespace
std;
const
int maxn=105
;char
s[maxn];
intf[maxn][maxn];
intmain()
printf(
"%d\n
", f[1
][n]);
}return0;
}
poj 3280 求變成回文串的代價
題意:給定乙個字串s,字串s的長度為m,字串s所含有的字元的種類的數量為n(最多26種 小寫字母),然後給定這n種字元add與delete的代價,求將s變為回文串的最小代價和。
題解:區間dp,子問題:當i,j的區間是回文串的時候所要付出的代價;
劃分:首尾相等,直接轉, 首尾不等,長區間是由比它短一的區間延展來的,從左邊還是右邊
注意:這個初始化,我是真的有點問題,找for迴圈下的狀態轉移的臨界條件,如果不行的話,在for迴圈下初始化;
這個給出2個cost,刪除和新增其實只要選其中較小的乙個即可;
總結:此題在寫的時候,思路就錯了,這個區間dp問題,它的問題不是由2段短的區間和並來的, 而是由短區間往2邊擴充套件來的,直到擴充套件到1-n;
#include #includeview code#include
#include
using
namespace
std;
const
int maxm=2e3+5
;const
int inf=0x3f3f3f3f
;int cost[30
], f[maxm][maxm];
char
s[maxm];
intmain()
/*memset(f, 0x3f, sizeof(f));
for(int i=0; i<=n; i++) f[i][i]=0; ///這個初始化是不對的,找了我好久
*/for(int len=1; len)
for(int i=1; i<=n-len; i++)
}cout
<1][n]<
return0;
}
RSA基本題型
已知 簡單公鑰 簡單密文 目標 得到明文 這裡的簡單沒有明確具體的含義,之後待我更深入後,再會對此進行解釋 normal rsa flag.enc和pubkey.pem兩個檔案 flag.enc是乙個密文檔案,pubkey.pem是公鑰檔案 先處理flag.enc密文檔案,用notepad 開啟後發...
BUAA單詞查詢(查詢 基本題)
問題描述 查詢方式說明 查詢方式以1 4數字表示,每個數字含義如下 1 在單詞表中以順序查詢方式查詢,因為單詞表已排好序,遇到相同的或第乙個比待查詢的單詞大的單詞,就要終止查詢 2 在單詞表中以折半查詢方式查詢 3 在單詞表中通過索引表來獲取單詞查詢範圍,並在該查詢範圍中以折半方式查詢。索引表構建方...
線性dp 區間dp
1 尼克的任務 額一道挺水的題,愣是做了幾個小時 動態規劃大致的思路還是找乙個轉移 換個詞就是影響 我們可以明顯看出本題的規則 空暇時,一遇到任務必須挑乙個接 求1 n時間內最大空暇時間 所以將任務排序是必要的,兩個關鍵字 再來想象一下當我做到第i 個任務時,我在 st i st i t i 1 時...