BZOJ 4893 項鍊分贓

2021-08-01 06:40:26 字數 804 閱讀 4290

有一串長度為n的項鍊,上面有紅綠藍三種顏色的珠子,每種顏色的珠子數目都是偶數,現在要你把它切幾刀分成

若干段,把其中一些段分給海盜1,剩餘的段分給海盜2,要求兩個海盜分得的每種顏色的珠子數量都相同,請輸出

最少需要切多少刀。

第一行乙個整數n,表示項鍊的長度。

第二行n個0~2的整數,分別表示紅綠藍三種顏色。

一行乙個整數,為最少切多少刀。 6

0 2 2 1 0 1

2樣例解釋:切兩刀,分成,,三份,第二份給海盜1,剩下給海盜2即可。

n<=100000

by monster_yi

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

思路+pair~

lty實在是太神了……這腦洞……

證明詳見出題人的部落格:講得非常清楚~

#include#include#includeusing namespace std;

int n,a[100001],c[3],num[3];

map>,int> b;

int read()

while(ch>='0' && ch<='9')

return x*f;

}int main()

} num[1]=num[2]=num[0]=0;

for(int i=1;i<=n;i++)

b[make_pair(num[0],make_pair(num[1],num[2]))]=1;

} puts("3");

return 0;

}

bzoj 4895 項鍊分贓(增強版)

time limit 1 sec memory limit 128 mb submit 277 solved 211 submit status discuss 你和你的1個同夥偷了一串長度為n的項鍊,它上面有m種顏色的珠子,我們假設項鍊為鏈狀的,並且每一顆珠子都是隨機分布,現在我想知道,對於給定的...

BZOJ1493 NOI2007 項鍊工廠

原題位址 又是一道資料結構神題,卡了一晚上 寫一下其中幾個寫搓的地方 1.update 時要clear 左右子樹 2.查詢完之後要記得把樹merge 回去 3.交換操作那裡,若i,j相等則直接退出,要不然會出錯 4.染色 查詢操作l r和l r時split 的範圍不同 update split 函式...

bzoj1493 NOI2007 項鍊工廠

維護全域性移動量什麼的後可以上線段樹。思維難度低一點的做法是直接splay。適合我這種腦殘選手 f操作就是把2 n翻轉。r操作就是把後面k個元素插到最前面來。維護顏色段是老套路了。比較坑的是。多加倆邊界節點的話,需要考慮有沒有可能對答案造成影響。然而邊界節點不可能在合併子區間的時候造成干擾。而且p操...