建通道(思維題)

2021-10-02 14:48:24 字數 1402 閱讀 7781

時間限制:c/c++ 3秒,其他語言6秒

空間限制:c/c++ 262144k,其他語言524288k

64bit io format: %lld

在無垠的宇宙中,有 n 個星球,第 i 個星球有權值 viv_ivi​。

由於星球之間距離極遠,因此想在有限的時間內在星際間旅行,就必須要在星球間建立傳送通道。

任意兩個星球之間均可以建立傳送通道,不過花費並不一樣。第 i 個星球與第 j 個星球的之間建立傳送通道的花費是 lowbit(vi⊕vj)\text(v_i\oplus v_j)lowbit(vi​⊕vj​),其中 ⊕\oplus⊕ 為二進位制異或,而 lowbit(x)\text(x)lowbit(x) 為 x 二進位制最低位 1 對應的值,例如 lowbit(5)=1,lowbit(8)=8\text(5)=1,\text(8)=8lowbit(5)=1,lowbit(8)=8。特殊地,lowbit(0)=0\text(0)=0lowbit(0)=0。

牛牛想在這 n 個星球間穿梭,於是――你需要告訴 牛牛,要使這 n 個星球相互可達,需要的花費最少是多少。

第一行,乙個正整數 n 。

第二行,n 個非負整數 v1,v2,…,vnv_1,v_2,\dots,v_nv1​,v2​,…,vn​ 。

保證 1≤n≤2×1051\leq n\leq 2\times 10^51≤n≤2×105,0≤vi<2300\leq v_i < 2^0≤vi​<230。

輸出一行,乙個整數表示答案。
示例1

複製2 1 2

2

1 2

複製1

1
1、2\text{}1、21、2 號點之間建立通道,v1⊕v2=3,lowbit(3)=1v_1 \oplus v_2=3, \text(3)=1v1​⊕v2​=3,lowbit(3)=1
思路:

這個題就是個分奇偶 然後如果有奇有偶則輸出去重後的(數量-1)

只考慮只有奇數和只有偶數的情況

我們可以把每個數不斷 / 2直到第x次某一位有0 也有1  就說明在除了x後同時出現了奇數和偶數 那答案就是(總數-1) * (1 <

這個題手賤變數名打錯了。。。

打錯的地方

**:

#includeusing namespace std;

typedef long long ll;

const int maxn=2e5+5;

int a[maxn];

int main()

ll m=s.size();

if(flag1&&flag2){

cout<

思維題合集

三個陣列,每個都是1到n的排列,定義為good pair,當且僅當,在三個陣列中,i和j的相對關係一樣。給出三個陣列,求good pair的數目。sample input sample output 42 3 1 4 2 1 4 3 2 4 3 1 3先考慮兩兩陣列,可以通過以一組為基準 rank,...

戰爭 思維題

內部題不放了 樣例輸入2 512 34 45 5105 10 15 43 20 5樣例輸出possible 4 100 impossibleps 感謝yxy給我講明白了這道題 太久沒水題解了來水乙個 早知道這篇題解這麼難寫就不寫了 include include include include de...

面試 思維開發題

1.你讓工人為你工作7天,給工人的回報是一根金條。金條平分成相連的7段,你必須在每天結束時給他們一段金條,如果只許你兩次把金條弄斷,你如何給你的工人付費?答案 將金塊弄斷兩次,折成1比2比4三段。付費情況如下 第x天付費 找回剩餘多少 第一天1 02 4 第二天2 14 1 第三天104 第四天4 ...