point:
首先明確,題目是讓我們從n個數中挑出k個數,他們&上之後的lowbit最大。
在lowbit最大的前提下,k最大。
遍歷答案v,即lowbit=2^v。for迴圈遍歷陣列,若在第v位存在1(二進位制),我們則肯定取這個數。
因為最後k個數一起&後,如果存在答案,肯定是***xx100000這樣的形式。1即是第v位。
那麼,我們取越多的符合條件的數(第v位存在1),他後面的1(若存在)則更有機會變成0。因為1&1=1,別的都是0
若到最後lowbit都不等於2^v,說明不存在k個數,&上使得lowbit=2^v
#include #include #include #include #include using namespace std;
#define ll long long
const ll maxn = 1e5+33;
ll a[maxn];
int main()
ll ans[maxn];
for(ll i=31;i>=0;i--)
}if((now&-now)==to)
}return 0;
}
牛客練習賽23 C 托公尺的位運算
托公尺完成了1317的上乙個任務,十分高興,可是考驗還沒有結束 說話間1317給了托公尺 n 個自然數 a1.an,托公尺可以選出一些帶回家,但是他選出的數需要滿足一些條件 設托公尺選出來了k 個數 b1,b2.bk,設這個數列 b 的給值為 b 中所有數按位與的結果,如果你能找到乙個整除 b 的最...
牛客練習賽23 C 托公尺的位運算(模擬)
托公尺完成了1317的上乙個任務,十分高興,可是考驗還沒有結束 說話間1317給了托公尺 n 個自然數 a1.an,托公尺可以選出一些帶回家,但是他選出的數需要滿足一些條件 設托公尺選出來了k 個數 b1,b2.bk,設這個數列 b 的給值為 b 中所有數按位與的結果,如果你能找到乙個整除 b 的最...
牛客練習賽23 托公尺的遊戲 概率,期望
題目背景編不下去了 托公尺有一棵有根樹 t,樹根為1,每輪他會在剩下的子樹中等概率乙個點 u,砍掉 u 的子樹 包含 u 如果樹上的點都被砍光了,遊戲結束。求出這個遊戲進行的期望輪數,可以證明這個數一定是有理數,設他為 第一行輸入乙個數 n,表示 t 的點數,下面 n 1 行給出了 t 的每條邊一行...