你在一家機械廠打工,你的老闆讓你把一組齒輪種類序列
a1,a2,..,an
取走幾個讓齒輪的傳動比為
1:1,老闆要求你取走最少的齒
輪,不能改變齒輪原來的相對位置,滿足
條件,即齒輪種類組合起來是回文串。
多組資料,第一行有乙個整數
t , 表示有
t組資料。
(t<=100)
以下每組資料第一行有乙個整數
n , 表示
n個齒輪
(1<=n<=
1000)
接下來一行有
n個整數
a1,a2,…,an
表示齒輪種類
(1<=ai<=10000)
取走的最少齒輪數
141 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,測試後有兩種操作,第一種是某一區間的...