CSUOJ 1729 齒輪傳動(基礎DP)

2021-07-14 20:16:29 字數 882 閱讀 7486

你在一家機械廠打工,你的老闆讓你把一組齒輪種類序列

a1,a2,..,an

取走幾個讓齒輪的傳動比為

1:1,老闆要求你取走最少的齒

輪,不能改變齒輪原來的相對位置,滿足

條件,即齒輪種類組合起來是回文串。

多組資料,第一行有乙個整數

t , 表示有

t組資料。

(t<=100)

以下每組資料第一行有乙個整數

n , 表示

n個齒輪

(1<=n<=

1000)

接下來一行有

n個整數

a1,a2,…,an

表示齒輪種類 

(1<=ai<=10000)

取走的最少齒輪數

1

41 2 3 1

1
解題思路:定義dp[i][j]為從i到j這段子串變為回文串所需要刪除的最少數字數。若第i個數字與第j個數字相等,則dp[i][j] = dp[i + 1][j - 1],若第i個數字與第j個數字不等,則dp[i][j] = min(dp[i + 1][j],dp[i][j - 1]) + 1。

**如下:

#include #include #include using namespace std;

const int maxn = 1005;

int dp[maxn][maxn],a[maxn];

int main()

memset(dp,0,sizeof(dp));

for(i = n;i >= 1;i--)else

}} printf("%d\n",dp[1][n]);

} return 0;

}

172 完美距離

聽說這題只用普通的線段樹就可以了,但我卻用了線段樹合併。也許蒟蒻對概念並不夠了解。注意n要定義為200000,因為環的處理要佔兩倍記憶體。考試的時候沒想清楚,一開始只得了三十分,後來悄悄看了成績後直接把n開到1000000把它a掉。事後直到現在才明白當時為毛re。如下 include include...

172 立體推箱子

此題是一道比較明顯但又麻煩的廣搜題,經典的走迷宮求最少步驟的題 由於這個題的狀態有些麻煩,我們建立乙個三元組結構體 x,y,li e x,y,lie x,y,l ie x,y x,yx,y表示座標,lie lieli e表示現在是立著的還是橫著躺或是豎著躺 l ie 0 lie 0 lie 0,表示...

CSU OJ 集訓難度(線段樹)

小l正在組織acm暑假集訓,但眾所周知,暑假集訓的萌新中有oi神犇,也有暑假才開始學演算法的萌新,如果統一集訓的難度,無法很好地讓萌新們得到訓練,所以小l想了乙個辦法,根據每次測試的情況,改變萌新們的集訓難度。現在將萌新們編號為1到n,最初萌新們的集訓難度為v0,測試後有兩種操作,第一種是某一區間的...