POI2007 立方體大作戰tet

2021-09-30 01:12:59 字數 1331 閱讀 8374

description

乙個叫做立方體大作戰的遊戲風靡整個byteotia。這個遊戲的規則是相當複雜的,所以我們只介紹他的簡單規

則:給定玩家乙個有2n個元素的棧,元素乙個疊乙個地放置。這些元素擁有n個不同的編號,每個編號正好有兩個

元素。玩家每次可以交換兩個相鄰的元素。如果在交換之後,兩個相鄰的元素編號相同,則將他們都從棧中移除,

所有在他們上面的元素都會掉落下來並且可以導致連鎖反應。玩家的目標是用最少的步數將方塊全部消除。

input

第一行包含乙個正整數n(1<=n<=50000)。接下來2n行每行乙個數ai,從上到下描述整個棧,保證每個數出現且

僅只出現兩次(1<=ai<=n)。初始時,沒有兩個相同元素相鄰。並且保證所有資料都能在1000000步以內出解。

output

第一行包含乙個數m,表示最少的步數。

sample input

樣例輸入155

2314

1435

2樣例輸入23

1231

23sample output

樣例輸出1

樣例輸出2

我們可以模擬一直放塊上去,模擬的思想。讓兩個不相鄰的碰到一起,必然需要之間隔的塊數的次數。

如果當前放著一塊的時候,前面已經有一塊一樣的了,那麼直接加上貢獻值,然後把前面的那一塊去掉,然後這個過程我們可以用樹狀陣列維護。

ac**:

#pragma gcc optimize(2)

#include

//#define int long long

#define lowbit(x) (x&(-x))

using namespace std;

const

int n=

1e5+10;

int n,m,d[n]

,vis[n]

,res;

inline

void

add(

int x,

int v)

inline

intask

(int x)

signed

main()

else vis[x]

=i,add

(i,1);

}printf

("%d\n"

,res)

;return0;

}

1106 POI2007 立方體大作戰tet

乙個叫做立方體大作戰的遊戲風靡整個byteotia。這個遊戲的規則是相當複雜的,所以我們只介紹他的簡單規 則 給定玩家乙個有2n個元素的棧,元素乙個疊乙個地放置。這些元素擁有n個不同的編號,每個編號正好有兩個 元素。玩家每次可以交換兩個相鄰的元素。如果在交換之後,兩個相鄰的元素編號相同,則將他們都從...

bzoj4312 立方體 構造

有若干行,每行三個數字 x y z 代表一組資料,表示立方體的長寬高加 1 第 i 行資料輸出case i 第i組資料的答案 2 1 2 2 2 2 case 1 4 case 2 15 x,y,z 1000 鄭州培訓d3考試題t2,orzydc 大概是第乙個正兒八經做的構造題吧 主要考察智商,像我...

shader入門16 立方體紋理

1.什麼是立方體紋理?簡單的說就是6張紋理組成的乙個方塊形狀的紋理.像骰子一樣,有六個面.2.立方體紋理有什麼用?立方體紋理通常用於作為反射源,以及環境反射來實現玻璃,金屬的效果 3.為什麼立方體紋理要做成這個形狀?以立方體的中心為原點,向任意方向投射射線,可以與立方體6個面相交,得到不同的取樣值....