有一串長度為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操...