Bookshelves

Bookshelves

https://ac.nowcoder.com/acm/problem/112786

Bookshelves

题意

本书,每一本书都有一个价值,现在在不改变书的顺序的条件下,把这本书分成段,设每一段的价值之和为图片说明 ,问sum [ 1 ] & sum [ 2 ] & sum [ 3 ] ....& sum [ k ] 的最大值

分析

1.因为是按位运算要求最大值,首先应该想到的是按位贪心,即从高位到低位贪心。在保证了某一位能够为1时,再去考虑下一位
2. 设图片说明 表示把前j本书放入前i个书架中,能否使二进制的第x位为1,因为我们要固定之前的高位,所以这里的x得累计之前的高位有效的1

代码

#include<bits/stdc++.h>

#define ll long long

using namespace std;

const int N=110;

int n,k;
ll a[N],sum[N];
bool f[N][N];

inline bool check(ll mid)
{
    memset(f,0,sizeof(f));
    f[0][0]=1;
    for (int i=1;i<=k;i++)//前i个书架    
        for (int j=1;j<=n;j++)//前j本书 
            for (int p=0;p<j;p++)
                f[i][j]|=(f[i-1][p]&(((sum[j]-sum[p])&mid)==mid));

    return f[k][n];
}

int main()
{
    scanf("%d%d",&n,&k);
    for (int i=1;i<=n;i++)
    {
        scanf("%lld",&a[i]);
        sum[i]=sum[i-1]+a[i];
    }

    ll ans=0;
    for (int i=60;i>=0;i--)
    {
        ll ok=(ans|(1ll<<i));
        if(check(ok)) ans=ok;
    }

    printf("%lld\n",ans);

    return 0;
}
每日一题 文章被收录于专栏

每天的题,为了牛币

全部评论

相关推荐

黑皮白袜臭脚体育生:简历统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写会更好
点赞 评论 收藏
分享
评论
4
1
分享

创作者周榜

更多
正在热议
更多
# 听劝,这个简历怎么改 #
14081次浏览 182人参与
# 面试被问“你的缺点是什么?”怎么答 #
6309次浏览 98人参与
# 水滴春招 #
16260次浏览 346人参与
# 入职第四天,心情怎么样 #
11280次浏览 63人参与
# 租房找室友 #
8005次浏览 53人参与
# 读研or工作,哪个性价比更高? #
26151次浏览 356人参与
# 职场新人生存指南 #
199185次浏览 5509人参与
# 参加完秋招的机械人,还参加春招吗? #
26960次浏览 276人参与
# 文科生还参加今年的春招吗 #
4101次浏览 31人参与
# 简历无回复,你会继续海投还是优化再投? #
48619次浏览 561人参与
# 你见过最离谱的招聘要求是什么? #
144708次浏览 829人参与
# 如果重来一次你还会读研吗 #
155714次浏览 1706人参与
# 机械人选offer,最看重什么? #
69076次浏览 449人参与
# 选择和努力,哪个更重要? #
44269次浏览 492人参与
# 如果再来一次,你还会学硬件吗 #
103643次浏览 1245人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
20519次浏览 413人参与
# 招聘要求与实际实习内容不符怎么办 #
46703次浏览 494人参与
# 22届毕业,是读研还是拿外包offer先苟着 #
4652次浏览 27人参与
# 你们的毕业论文什么进度了 #
901211次浏览 8960人参与
# 软开人,你觉得应届生多少薪资才算合理? #
81371次浏览 496人参与
# 国企还是互联网,你怎么选? #
109189次浏览 853人参与
牛客网
牛客企业服务