考場上這題做了我兩個小時。。。果然第一步都錯了。。。
首先,所謂的絕對值其實可以用最優性忽略!!!!
即:|a-b|=max(a-b,b-a)
所以,不必考慮到底誰大誰小,在最優策略中,一定是合法的。
然後就很簡單了:每乙個位置的貢獻分別可能為2,0,-2(開頭末尾可能為-1,1)
一段連續的2或-2就是一段。這麼搞一下dp就行了
#include
#include
#include
#define sf scanf
#define pf printf
#define maxn 30010
#define maxk 210
using
namespace std;
int dp[maxk][5
];int n,k;
intmain()
}}pf(
"%d"
,max
(dp[k][1
],dp[k][3
]));
}
多校聯考2 T3 排列 DP
dp 對於乙個排列,考慮相鄰的兩個元素,如果後面乙個比前面乙個大,表示這個位置是上公升的,用 i 表示,反之這個位置是下降的,用 d表示。如排列 3,1,2,7,4,6,5 可以表示為 diidid。現在給出乙個長度為 n 1的排列表示,問有多少種 1 到n 的排列滿足這種表示。乙個字串 s,s 由...
10 17T7 三進製狀壓DP
tyvj兩周年慶典要到了,sam想為tyvj做乙個大蛋糕。蛋糕俯檢視是乙個n m的矩形,它被劃分成n m個邊長為1 1的小正方形區域。可以把蛋糕當成n行m列的矩陣 蛋糕很快做好了,但光禿禿的蛋糕 肯定不好看!所以,sam要在蛋糕的上表面塗抹果醬。果醬有三種,分別是紅果醬 綠果醬 藍果醬,三種果醬的編...
線段樹 資料結構 四校聯考1024T3
沒過是因為沒看。這題其實相當水。重新定義一下逆序對 每個點的貢獻為,其後面的,比它小的數的個數。然後這樣一來,每次排過序之後的點,其後面就不可能有比它小的值了,直接忽略以後排序又排到它的情況。include include include include define sf scanf define...