題目描述
在無垠的宇宙中,有 n 個星球,第 i 個星球有權值 vi。
由於星球之間距離極遠,因此想在有限的時間內在星際間旅行,就必須要在星球間建立傳送通道。
任意兩個星球之間均可以建立傳送通道,不過花費並不一樣。第 i 個星球與第 j 個星球的之間建立傳送通道的花費是 lowbit(vi⊕vj),
其中 ⊕ 為二進位制異或,而 lowbit(x) 為 x 二進位制最低位 1 對應的值。
牛牛想在這 n 個星球間穿梭,於是――你需要告訴 牛牛,要使這 n 個星球相互可達,需要的花費最少是多少。
題目的思路就是找到乙個最小的二進位制位置,這個位置的二進位制位值是1,並且這個位置在n個星球權值的二進位制位值裡面也存在為1,並且存在為0;
神奇的異或運算就解決了;
#include
#define ll long long
#define pa pair
#define lson k<<1
#define rson k<<1|1
//ios::sync_with_stdio(false);
#define inf 0x3f3f3f3f
using
namespace std;
const
int n=
200100
;const
int m=
1000100
;const ll mod=
100000007
;int a[n]
;set<
int>se;
ll ans;
intmain()
int s1=
0,s2=
0x7fffffff
;for
(int i=
1;i<=n;i++
) s2^
=s1;
//找出二進位制位有1但不都為1的位置
int t=se.
size()
-1;for
(int i=
0;i<=
30;i++)}
cout
}
2020牛客寒假演算法基礎集訓營
長期更新,補完為止 2 g 判正誤 題意 t組資料。判斷a d b e c f是否等於g。1e9 a,b,c,g 1e9,0 d,e,f 1e9。保證不會出現指數和底數同為 0 的情況。思路 硬算會tle或mle。快速冪取模,為了增加過題概率,多取幾個模數判斷。includeusing namesp...
2020牛客寒假演算法基礎集訓營1
找規律,推公式 三角形個數為2 m n m n m 1 n 1 2 m n mn m 1 n 1 2 m n mn m 1 n 1 include include include include using namespace std typedef long long ll const int m...
2020牛客寒假演算法基礎集訓營1
h題 突然發現h題可以用好多種方法做的。方法一 雙指標,維護乙個修改次數小於等於k的區間 include using namespace std typedef long long ll const int mod 1e9 7 const int n 1e5 5 const int inf 0x3f...