這道題和最長子序列,divisible subset題目類似,都可以用o(n2)的時間複雜度完成。可以想象,對於第i個數,dp[i]=dp[j]+1,當且僅當dp[j]+1>dp[i]而且nums[j]和nums[i]的差值和j所處位置的差值符號相反。所以,**如下:
class solution
if(dp[i]>res) res=dp[i];}}
return res;
}};
需要注意的是,對於nums.size()==2的情況下的處理,我開始統一返回2,後來發現誤判了[1,1]這一種型別。
但是這種解法時間複雜度比較高,有另外一種解法比較巧妙,而且時間複雜度比較低。現在觀察乙個序列[1,4,5,6,3,2,1,7],最長搖擺序列是4。分別是:
1,4,3,7
1,4,2,7
1,4,1,7
1,5,3,7
1,5,2,7
1,5,1,7
1,6,3,7
1,6,2,7
1,6,1,7
可以看到4,5,6所對應的搖擺序列是相同的,3,2,1所對應的搖擺序列是相同的。因為到4位置,序列的方向是上公升的,所以5,6也是上公升的,對序列長度不影響,其後應該下降,而且只要比4小的一定比5和6小。
所以這就提示我們找搖擺序列的最大拐點,這樣的時間複雜度是o(n)
class solution
j=i;
i++;
}return res;
}};
USACO Hamming Codes 解題報告
資料小,暴力搜尋可以搞定。但是推薦使用dfs,每個節點 數 有取與不取兩個分支。注意 0是必須出現的。證明如下 最終得到的結果序列中,0是必須出現的,證明如下 如果存在另乙個滿足要求的結果序列s 其最小值為a1 n 0,那麼序列s s n 是滿足條件的最小解,且首元素為0 id xpli1 prog...
USACO Closed Fences 解題報告
幾何題看著就很有畏懼感。這裡用的是最 的演算法,時間複雜度應該在n 2。還沒看別人的解題報告,不過我猜nlogn的解法是有的。比如判斷乙個fence是不是valid的時候,這裡將所有的線段兩兩比較,看是否相交。但是有個叫line sweep的演算法,可以在nlogn的時間複雜度內完成。既然accep...
The XOR Largest Pair 解題報告
描述 在給定的n個整數a1,a2 an中選出兩個進行xor運算,得到的結果最大是多少?輸入格式 第一行乙個整數n,第二行n個整數a1 an。輸出格式 乙個整數表示答案。樣例輸入 31 2 3 樣例輸出 資料範圍與約定 對於100 的資料 n 10 5,0 ai 2 31。解題思路 由於只要求在n個數...