北方大學 ACM 多校訓練賽 第十五場 蜘蛛牌A

2021-08-02 10:53:32 字數 891 閱讀 4763

題目描述

xcx最近迷上了玩蜘蛛牌。蜘蛛牌是windowsxp作業系統自帶的一款紙牌遊戲,遊戲規則是這樣的:只能將牌拖到比它大一的牌上面(a最小,k最大),如果拖動的牌上有按順序排好的牌時,那麼這些牌也跟著一起移動,遊戲的目的是將所有的牌按同一花色從小到大排好。為了簡單起見,我們的遊戲只有同一花色的牌,但是這樣xcx又覺得太簡單了,於是他把牌數增加到了n(1<=n<=100),牌隨機的在一行上展開,編號從1到n,把第i號上的牌移到第j號牌上,移動距離為abs(i-j),現在你要做的是求出完成遊戲的最小移動距離。

輸入描述

第一行t(1<=t<=1010)代表t組資料。每組資料報括兩行,第一行是乙個數字n,代表有n張牌,第二行有n個數字:為1…n的一種排列。

輸出描述

最小移動距離

樣例輸入

1

103 10 4 2 5 9 1 8 6 7

樣例輸出

16

題解:

採用區間動態規劃的方式,但是直接進行區間dp是沒有任何意義的,因此需要對數列進行變化一下,我們進行dp的區間[a,b]定義為高度為a到高度為b的紙牌疊加到一起,所需要的最少距離和。在一開始,我們定義陣列arr[x]中儲存的是高度為x的紙牌所在的位置。那麼狀態轉移就可以寫成:dp[a][b] = dp[a][j] + dp[j+1][b] + abs(arr[b]-arr[j])

**:

#includeusing namespace std;

int a[105],n;

int dp[105][105];

int main()

for(int k=2;k<=n;k++)

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

}return 0;

}

2017 多校訓練賽 總結

緊張兮兮的 2017 年度的多校訓練賽總算是結束了,一如往常 雖然這是我第一次打 十場比賽,每場比賽十餘道題,難道較 ac m 區域賽稍大一些。這乙個月,著實不好熬,每週都要被大佬們按在地上摩擦,還是兩次,我很難受 十場比賽下來,成績並不理想,好的時候能進前二百,差的時候三百都碰不到,最後十場取八場...

SDNU 多校訓練賽2 ABF

給出乙個數n,而你也將得到乙個連你自己也不到的數x,然後你可以用這個數x去和乙個y進行與運算,而系統也會回答你與運算的結果是不是等於y,其中 0 x,y 2 n 1 問,你一共有多少種方法可以在和y與運算後知道你手上的數x。首先,我們可以用x去 和1 即x 1,依次判斷x的二進位制的每一位是0還是1...

HDU 2017 多校訓練賽1 補題

acm模版 比賽不是特別順利,第一次打多校,感覺還是英語問題很大,雖然編碼水平也很渣 比賽時做了四道,有些心痛了。賽後補補題吧,先將賽中的四道題寫一下,佔佔流量,然後慢慢新增補的題吧!水題,就是乙個公式。include include using namespace std int m int ma...