洛谷 P3694 邦邦的大合唱站隊

2022-07-26 12:45:09 字數 593 閱讀 6481

題目鏈結

\(m\) 很小,考慮狀壓。狀態 \(s\) 一共有 \(m\) 位,每一位代表當前樂隊是否排好(即樂隊所有成員都站在一起),並假設所有排好的樂隊都站在前面。

\(f[s]\) 表示狀態為 \(s\) 時最少移動的偶像數目。不管所有排好的樂隊順序如何,它們的總數是一定的。列舉 \(s\) 狀態中的每乙個 \(0\),如果將它變成 \(1\) 並接在所有排好的樂隊後,需要付出的代價為:所有不在指定區域內的偶像出列,所有在指定區域內不是當前樂隊的偶像出列,它們進行互換。可以使用字首和維護。

#include #include #include using namespace std;

int n, m, cnt, a, sum[26][101000], f[(1 << 20) + 666];

int main()

memset(f, 0x3f, sizeof(f));

f[0] = 0;

for(int i = 0; i <= (1 << m) - 1; i++)

}printf("%d", f[(1 << m) - 1]);

return 0;

}

P3694 邦邦的大合唱站隊

bang dream 裡的所有偶像樂隊要一起大合唱,不過在排隊上出了一些問題。n個偶像排成一列,他們來自m個不同的樂隊。每個團隊至少有乙個偶像。現在要求重新安排佇列,使來自同一樂隊的偶像連續的站在一起。重新安排的辦法是,讓若干偶像出列 剩下的偶像不動 然後讓出列的偶像乙個個歸隊到原來的空位,歸隊的位...

洛谷P3694 邦邦的大合唱站隊 簽到題

bang dream 裡的所有偶像樂隊要一起大合唱,不過在排隊上出了一些問題。n個偶像排成一列,他們來自m個不同的樂隊。每個團隊至少有乙個偶像。現在要求重新安排佇列,使來自同一樂隊的偶像連續的站在一起。重新安排的辦法是,讓若干偶像出列 剩下的偶像不動 然後讓出列的偶像乙個個歸隊到原來的空位,歸隊的位...

洛谷 P3694 邦邦的大合唱站隊 狀壓DP

首先要注意合唱隊排好隊之後不一定是按 1.2.3.m 的順序的 n 的範圍很大,但 m 的資料比較小,所以我們考慮裝壓dp 我們設 f i 為狀態為 i 的合唱隊已經安排好位置的最小花費 接下來就是狀態轉移方程的問題 for int i 1 i 我們用乙個變數 len 記錄排好隊的總人數,如果當前合...