CF981D
CF981D
题意:
给你n个数,要求你分成k堆。每堆的内部加和,每堆之间是相与。问最大的值。
解法:
二进制下最大的数的所有位一定是1,所以贪心去找是否最大一定是正确的。
然后DP记录+贪心就可以AC。
CODE:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define LL long long
#define N 60
LL dp[N][N],a[N];
LL sum[N],n,k;
int main() {
scanf("%lld%lld",&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 bit = 55 ; bit >= 0 ; bit--) {
LL num = (LL)1 << bit;
memset(dp,0,sizeof(dp));
dp[0][0] = 1;
for(int l = 1 ; l <= k ; l++) {
for(int i = 1 ; i <= n ; i++) {
for(int j = 0 ; j < i ; j++) {
if(dp[l - 1][j] && ((sum[i] - sum[j]) & num) && (((sum[i] - sum[j]) & ans) == ans))
dp[l][i] = 1;
}
}
}
if(dp[k][n]) ans += num;
}
printf("%lld \n",ans);
//system("pause");
return 0;
}
CF981D的更多相关文章
- 【CF981D】Bookshelves(贪心,动态规划)
[CF981D]Bookshelves(贪心,动态规划) 题面 洛谷 Codeforces 给定一个长度为\(n\)的数列,把他们划分成\(k\)段,使得每段的和的结构按位与起来最大. 题解 从高位往 ...
- CF981D Bookshelves
按位贪心+DP的好题qwq 首先看到题目的要求,统计价值的时候的操作是按位与,就要有按位分别计算的意识 开始没意识到结果想了好久还是看了题解才想到 由于统计价值的方式不是加和,所以可能会出现两个较大的 ...
- Codechef April Challenge 2019 游记
Codechef April Challenge 2019 游记 Subtree Removal 题目大意: 一棵\(n(n\le10^5)\)个结点的有根树,每个结点有一个权值\(w_i(|w_i\ ...
随机推荐
- China Union Pay helper
static string proxyIpAddress = AppConfig.GetProxyIpAddress; static string proxyUserName = AppConfig. ...
- Python集合的常用方法
注释很详细 collection={,,"apple","orange","cat"} # 查看一个数是否在集合中 in print(&qu ...
- Django rest-framework框架-版本控制
第一版: from rest_framework.versioning import BaseVersioning class ParamVersion(object): def determine_ ...
- PCA(主成分分析)方法浅析
PCA(主成分分析)方法浅析 降维.数据压缩 找到数据中最重要的方向:方差最大的方向,也就是样本间差距最显著的方向 在与第一个正交的超平面上找最合适的第二个方向 PCA算法流程 上图第一步描述不正确, ...
- caffe prototxt分析
测试用prototxt name: "CIFAR10_quick"layer { name: "data" type: "MemoryData&quo ...
- 安卓开发之ArrayAdapter使用
package com.lidaochen.test; import android.support.v7.app.AppCompatActivity; import android.os.Bundl ...
- github 提交和更新代码
…or create a new repository on the command line echo "# flutterPluginsWorks" >> RE ...
- MySQL间隙锁问题
间隙锁(Gap Lock):锁加在不存在的空闲空间,可以是两个索引记录之间,也可能是第一个索引记录之前或最后一个索引之后的空间. 最近用户反馈说系统老是出现insert时,等待超时了,最后发现是ins ...
- RabbitMQ的特点与应用场景(二)
1.RabbitMQ的主要特点 (1)可靠性:RabbitMQ可通过队列持久化,交换机持久化,消息持久化及ACK回应等机制保证可靠性 (2)支持多种语言与协议:RabbitMQ几乎支持所有的编程语 ...
- 用window.showModalDialog()打开的页面Request.UrlReferrer为null
今天在解决一个问题,怎么也找不到解决方案.我的一个窗体是IE通过window.showModalDialog()打开的,但为了防止用户手工输的地址,所以我需要判断是通过别的页面调整获得,用Reques ...