1. 直接用之前的lis**了。而且那段**求了序列出來。刪掉一部分。但是交了兩次都wa。後來發現,忘了注釋掉重定向了。
2. 沒啥可說,主要是公式,而且很簡單,就是dp[i] = max. 另外,不一定最後的最大。所以最後乙個迴圈找到最大的。
**:#include#include#includeusing namespace std;
const int maxn = 1005;
int a[maxn],dp[maxn];
int n;
int main()
//for(int i = 0; i < maxn; i++)
for(int i = 1; i<=n; i++)
{dp[i] = 1;
for(int j = 1; ja[j])
{if(dp[i]
每日一題(11) poj1276
1.本來覺得很簡單,卻耗費了一天半的時間。本來做完1837之後感覺已經明白了怎麼做。但是事實彷彿並非如此。當然,這也有自己的一點執念。2.這幾天體會到,寫程式就像做數學題一樣,很忌諱一算就錯。程式也是,不能想起來覺得這樣這樣,但是寫起來沒有把握對。就像前兩天有個演講說的那樣,印度的程式很厲害,因為所...
每日一題(14) poj1260
1.一次ac 248k 0ms 2.其實就是公式。如前面所說。只要有公式就好辦。一看感覺可以用動態規劃。dp i max 關鍵是後面的動態那部分怎麼寫,也就是c j 1,i 是怎麼算。這裡就是吧從j 1.i全部當成i層。可以想到,如果你覺得j 1.i之間還可以細分層,這麼想是對的。但是已經算過。因為...
每日一題(18) poj1159
1.自己思考思路的時候開始覺得用動態規劃,但是想不出公式。後來覺得如果把輸入的字串反過來,然後和原來的字串相比求最大序列,然後答案就是原來的序列減去最大序列了。因為無法匹配的肯定需要新增。可以匹配的話就一定會出現在最大序列裡面。這可以用反證法證明。解決了方法的問題。下面就是 其實就是乙個最大序列匹配...