題目描述
位運算是乙個非常重要的東西。而小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 ...