小A的位運算 貪心

2021-09-18 06:43:05 字數 865 閱讀 5064

題目描述

位運算是乙個非常重要的東西。而小a最近在學習位運算,小a看到了一道很簡單的例題,是說從n個數裡面選出n-1個數要讓它們或起來的值最大,小a想知道這個答案是多少。你可以幫幫他嗎?

兩種方法:

1.可以用貪心的思路,從大到小依次去更新或值ans,如果或到乙個數沒改變時,說明至少可以不選它,如果一直或到最小值之前ans一直在增大,說明可以不選最小的那個。

2.預處理字首和字尾,掃一遍就行了。

#include#include#include#include#include#include#includeusing namespace std;

const int maxn = 5e6+5;

int arr[maxn];

bool cmp(int a,int b)

int main()

sort(arr,arr+n,cmp);

int ans=arr[0];

int flag=1;

for(int i=1;i#include #define ll long long

using namespace std;

const int maxn = 5000005;

ll arr[maxn];

ll a[maxn];

ll b[maxn];

int main()

ll temp = arr[0];

a[0]=0;

a[1]=arr[0];

for(int i=2;i=0;--i)

ll ans = -1<<30;

for(int i=0;icout<}

return 0;

}

Bits Reverse(貪心 位運算)

給定兩個非負整數 x 和 y 規定一種操作,逆序任意三個相鄰的二進位制位。問最少需要多少次操作,能使得 x y 若不能達到,則輸出 1 1 leq t leq 10000 0 leq x,y leq 10 我們先觀察一下這個逆序操作有什麼性質,假設三個相鄰的二進位制位構成乙個三元組 a,b,c 逆序...

NOIP模擬 位運算(trie樹 按位貪心)

題目描述 有q次操作,每次操作是以下兩種 1 加入乙個數到集合中 2 查詢,查詢當前數字與集合中的數字的最大異或值,最大and值,最大or值 輸入格式 第一行1個正整數q表示操作次數 接下來q行,每行2個數字,第乙個數字是操作序號op 1,2 第二個數字是x表示操作的數字 輸出格式 輸出查詢次數行,...

位運算小結及位運算題目小練

按位與運算子 是雙目運算子。其功能是參與運算的兩數各對應的二進位相與。只有對應的兩個二進位均為1時,結果位才為1,否則為0。參與運算的數以補碼方式出現。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 舉例 9 00001001 5 00000101 1 00000001 00001001 ...