题意:两个数组,求一个区间使得或运算结果最大。
解法:因为位运算是无法越算越小的。所以只需要从头或到尾即可。
#include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> #include <stdlib.h> #include <queue> using namespace std; int main() { int n; while(~scanf("%d",&n)) { int sum=0,sum1=0,a,b; for(int i=0; i<n; i++) { scanf("%d",&a); sum|=a; } for(int i=0; i<n; i++) { scanf("%d",&b); sum1|=b; } printf("%d\n",sum+sum1); } return 0; }
时间: 2024-11-23 08:43:48