CodeForces 631 A.Interview(水~)

来源:互联网 发布:不交叉拓扑图算法 编辑:程序博客网 时间:2024/06/03 11:18

Description
f(x,l,r)表示将x序列的第l个元素到第r个元素按位或后的结果,给出两个长度为n的序列,问f(a,l,r)+f(b,l,r)的最大值,1<=l<=r<=n
Input
第一行一整数n表示序列长度,之后输入两个长度为n的序列a和b(0<=ai,bi<=1e9)
Output
输出f(a,l,r)+f(b,l,r)的最大值,1<=l<=r<=n
Sample Input
5
1 2 4 3 2
2 3 3 12 1
Sample Output
22
Solution
简单题,按位或只会越来越大,所以f(a,1,n)+f(b,1,n)最大
Code

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<queue>#include<map>#include<set>#include<ctime>using namespace std;typedef long long ll;#define INF 0x3f3f3f3f#define maxn 1111int n,a,b;int main(){    while(~scanf("%d",&n))    {        a=b=0;        for(int i=1;i<=n;i++)        {            int t;            scanf("%d",&t);            a|=t;        }        for(int i=1;i<=n;i++)        {            int t;            scanf("%d",&t);            b|=t;        }        printf("%I64d\n",(ll)a+(ll)b);    }    return 0;}
0 0
原创粉丝点击