牛客練習賽41 D 最小相似度(BFS)

2021-09-11 20:01:46 字數 590 閱讀 3401

思路:m最大只有20,如果把每個二進位制串看成乙個狀態,最多只有2^20 = 1048576個狀態,可以暴力搜尋。

如果我們把某個串改變1位,這個改變後的串和這個串的答案就是m−1,比如01001,隨便改變1位變成01000,01001 ^ 01000 = 00001

答案就是m-1。我們要找的是m-x的最小值,那麼找到改動的最大位數x就行了。

我們把開始給定的所有二進位制串看成起始點,每一步搜尋對二進位制串進行乙個二進位制位的翻轉對全部狀態進行bfs,設搜到的步數最大的狀態步數為x,則答案就是m-x,複雜度o(n+2^m)。

#include using namespace std;

int a[1<<21], ans, n, m;

queue q;

string s;

void bfs()

a[k] = 0;

q.push(k);

}bfs();

printf("%d\n",m-ans);

}

牛客練習賽 41 D 最小相似度 BFS

題意 定義兩個位數相等的二進位制串的相似度sim a,b 二進位制串中a b中0的個數 sim left a,b right texta oplus b text sim a,b 二進位制串中a b中0的個數 給定n nn個長度為m mm的二進位制串。現在的問題是找出乙個額外的長度為m mm的二進位...

題解 牛客練習賽41 D 最小相似度

題目鏈結 text 首先考慮我們到底要求啥,實際就是要快速求出對於乙個數 x,所有數與它異或後的sim值。一種 的想法是直接列舉 t,顯然複雜度 因為 n 太大了,是 o 2 m times n 的。考慮把 n 乾掉,倒著想。題目的描述引導我們去二分答案。設當前答案是 mid,目標就是看是否存在乙個...

牛客練習賽41 D 最小相似度 思維 bfs

傳送門 給定nn n個長m mm位的二進位制串 求乙個二進位制串t tt,定義val ival i vali 是t tt與第i ii個二進位制串相同的位數 使得m ax val 1,va l2.va ln max val 1,val 2.val n max va l1 val2 val n 最小,只...