軟體補丁問題

2022-06-04 15:27:10 字數 897 閱讀 1622

題目鏈結

順著做網路流24題看到的 起初原本以為是費用流

後來看到\(n <= 20\)..

狀壓走起 這題狀壓還是很明顯的,\(b1,b2,f1,f2\)都明顯壓縮,初始狀態\((1 << n) - 1\) 目標狀態\(0\)

這題因為點數太多,直接建邊的話空間代價太大,我們選擇對每個點都跑乙個\(m\)次的列舉

當現在的狀態\(now\)滿足\((now\quad and\quad b1[i])\quad ==\quad b1[i]\quad and\quad (now\quad and\quad b2[i])\quad ==\quad 0\),\(i\)補丁是合法的

可以變為\(((now\quad or\quad f1[i])\quad xor\quad f1[i])\quad or\quad f2[i]\)

然後跑\(spfa\)和\(dij\)都行

#include#include#include#include#define ll long long //注意資料範圍  可以狀壓 

using std::queue;

ll n,m;

ll b1[200],b2[200],f1[200],f2[200],v[200];

ll minn[(1 << 20) + 10];

bool vis[(1 << 20) + 10];

queueqwq;

void spfa() }}

}int main()

}// for(int i = 1;i <= m;++i)

// std::cout

if(minn[0] <= 20000000000)

std::cout

std::cout<<0<}

狀壓 軟體補丁問題

不知道為什麼放在網路流24題裡面,我感覺是狀壓。題面乙個軟體中有 n 個錯誤,共 m 個補丁程式。每乙個補丁程式都有其特定的適用環境。對於每乙個補丁 i 都有 2 個與之相應的錯誤集合 b1 i 和,b2 i 使得僅當軟體包含 b1 i 中的所有錯誤,而不包含 b2 i 中的任何錯誤時,才可以使用補...

P2761 軟體補丁問題

t 公司發現其研製的乙個軟體中有 n 個錯誤,隨即為該軟體發放了一批共 m 個補丁程式。每乙個補丁程式都有其特定的適用環境,某個補丁只有在軟體中包含某些錯誤而同時又不包含另一些錯誤時才可以使用。乙個補丁在排除某些錯誤的同時,往往會加入另一些錯誤。換句話說,對於每乙個補丁 i,都有 2 個與之相應的錯...

網路流24題 軟體補丁問題

description t 公司發現其研製的乙個軟體中有 n 個錯誤,隨即為該軟體發放了一批共 m 個補丁程式。每乙個補丁程式都有其特定的適用環境,某個補丁只有在軟體中包含某些錯誤而同時又不包含另一些錯誤時才可以使用。乙個補丁在排除某些錯誤的同時,往往會加入另一些錯誤。換句話說,對於每乙個補丁 i ...