NOIp2005 篝火晚會

2022-05-13 09:47:05 字數 802 閱讀 5354

luogu1053

首先要發現乙個事實:對於每個不再正確位置上的人,我們都要花費1的代價來讓他正確(然而我沒有發現…)。

todo:證明這個事實。

然後就可以轉化問題為:最多有多少個人不用動。那麼那些人不用動呢?就是那些與目標位置距離相等的人的集合,即斷環為鏈之後,不用右移就在目標位置的人、右移一次到達目標位置的人、右移兩次……這幾群人。他們之中最多的那群就是最多有多少個人不用移動。

如何生成目標鏈呢?直接模擬就好了。不過要注意如果「我愛的人不愛我」的話就gg了。

#include #include const int n = 50010;

int fr[n][2], per[n];

int n;

int spin[n];

int main()

} per[1] = 1; per[2] = fr[1][0]; per[n] = fr[1][1];

for (int i = 2; i < n; ++i) else

} // 由於我們恢復每個點的代價為1,所以找出哪些點不用動,剩下的就是答案。

int ans = 0x3f3f3f3f;

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

} memset(spin, 0, sizeof spin);

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

} printf("%d\n", ans);

return 0;

}

NOIP2005 篝火晚會

題目 分析 置換群.首先理解題意 b1,b2,bn是無限制的,並非連續,並非遞增,隨便選。於是可以形成若干個環,乙個環的花費是這個環包含的元素個數。所以,最小花費就是多少個人不在應在的位置上。再,多少個人不在應在的位置上 n 最多多少人在應在的位置上。然後,這個可以用偏移量求,求偏移量中包含元素最多...

Noip2005 篝火晚會

佳佳剛進高中,在軍訓的時候,由於佳佳吃苦耐勞,很快得到了教官的賞識,成為了 小教官 在軍訓結束的那天晚上,佳佳被命令組織同學們進行篝火晚會。一共有nnn個同學,編號從111到nnn。一開始,同學們按照1,2,n1,2,n1,2,n的順序坐成一圈,而實際上每個人都有兩個最希望相鄰的同學。如何下命令調整...

NOIP 2005 篝火晚會

額 對這組題感興趣的具體的解題報告可以戳戳這裡 問題描述 佳佳剛進高中,在軍訓的時候,由於佳佳吃苦耐勞,很快得到了教官的賞識,成為了 小教官 在軍訓結束的那天晚上,佳佳被命令組織同學們進行篝火晚會。一共有n個同學,編號從1到n。一開始,同學們按照1,2,n的順序坐成一圈,而實際上每個人都有兩個最希望...