序列划分

序列划分

https://ac.nowcoder.com/acm/contest/7413/A

题目描述

给出一个长为 n 的序列 A1,A2,…,An

你需要将序列 A 划分成若干个连续段,一段的权值定义为这段内的所有数的按位或。

你需要恰当地选择划分方案,使得每段的权值之和最大。

求出每段的权值之和的最大值。

题目分析:首先题目要求的是n个整数划分之后的与运算,那么我们可以想打,两个数的和一定大于等于两个数的按位与,那么直接就把每个数都分层一个序列,所以最后权值之和就是数组每个数的和

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5 + 10;
ll a[maxn];
int main()
{
    ll n, sum = 0;
    scanf("%lld", &n);
    for (int i = 1; i <= n; ++i)
        scanf("%lld", &a[i]);
    for (int i = 1; i <= n; ++i)
        sum += a[i];
    printf("%lld\n", sum);
}
牛客比赛系列题解 文章被收录于专栏

加油加油

全部评论

相关推荐

11-06 16:50
门头沟学院 Java
用微笑面对困难:word打字比赛二等奖的我,也要来凑合凑合
点赞 评论 收藏
分享
11-28 13:56
已编辑
吉林建筑大学
所有好工作吻上来:最近可能压力比较大吧,面试的时候已经不屑于去说一些违心的话了,今天这场面试我真是没控制住啊,感觉我已经要发火了
实习学到最有价值的工作习...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务