代码源每日一题div1 DP 数组划分

news2024/11/24 12:42:45

数组划分 - 题目 - Daimayuan Online Judge

题意:

思路:

关于位运算的最大值,只需要按位去贪心即可,即从高位向低位贪心,答案一定是1111000的形式

那么我们去枚举这个1和0的分界线在哪就好了

对于一个确定好的分界线,去check一下这个答案是否能够满足条件

本来考虑在check里面进行贪心,但是贪心未遂,因此可以在check里面dp

状态设计:dp[i][j],表示前i个数,划分了j段的每段和的与的最大值

确定好状态含义后,我们去枚举上一个状态

首先去枚举第j段的长度,第j段长度确定后,如果第j段满足条件(即第j段的和比答案大),就去枚举上一段(第j-1段)的长度,取上一个状态的最大值就行(最优子结构)

Code:

#include <bits/stdc++.h>
using namespace std;
#define low(x) (x&-x)
#define mnf 0x3f3f3f3f
#define inf 0xc0c0c0c0
#define rep(i,x,y) for(int i=x;i<=y;i++)
#define pre(i,x,y) for(int i=x;i>=y;i--)
#define int long long
const int mxn=1e2+10,mxv=1e6+10;
int n,k,ans=0;
int a[mxn],dp[mxn][mxn],pre[mxn];
bool check(int x){
    //cout<<x<<'\n';
    memset(dp,0,sizeof(dp));
    dp[0][0]=1;
    rep(i,1,n){
        rep(j,1,i){
            if(((pre[i]-pre[j-1])&x)==x){
                rep(len,1,k) dp[i][len]|=dp[j-1][len-1];
            }
        }
    }
    return dp[n][k];
}
void solve(){
    ans=0;
    cin>>n>>k;
    rep(i,1,n) cin>>a[i];
    rep(i,1,n) pre[i]=pre[i-1]+a[i];
    pre(i,60,0){
        ans|=(1ll<<i);
        if(!check(ans)) ans^=(1ll<<i);
    }
    cout<<ans<<'\n';
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int T=1;
    //cin>>T;
    while(T--)solve();
    return 0;
}

 总结:

关于的位运算贪心,一般考虑按位贪心

如果在check函数里面不能贪心,就去考虑dp

考虑状态转移时,可以考虑枚举决策,或者直接枚举上一个状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/47374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

模板学堂丨DataEase用户操作日志分析大屏

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场&#xff08;https://dataease.io/templates/&#xff09;。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板&#xff0c;方便用户根据自身的业务需求和使用场景选择对应的仪表板模板&#xff0c;并…

基于FPGA的ALU计算器verilog实现

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 Verilog HDL是一种硬件描述语言&#xff0c;以文本形式来描述数字系统硬件的结构和行为的语言&#xff0c;用它可以表示逻辑电路图、逻辑表达式…

粒子群算法查找函数最小值

实现 函数 F01、F06 的优化测试 以下内容是现有算法的运行结果、调参分析、及代码实现&#xff0c;用于给其他人提供参考&#xff0c;懒得改了hh 1. 运行结果 参数 w 0.5 &#xff08;可更改&#xff09; c1 2.0 &#xff08;可更改&#xff09; c2 2.0 &#xff08;可更改&…

2.每天进步一点点-Python爬虫需要了解一下基础的web相关内容

14天学习训练营导师课程&#xff1a; 杨鑫《Python 自学编程基础》 杨鑫《 Python 网络爬虫基础》 杨鑫《 Scrapy 爬虫框架实战和项目管理》 文章目录1.网络请求过程1.1通过 URL 查找服务器 IP1.2三次握手建立 TCP 连接1.3发送 HTTP 请求1.4服务器响应请求1.5浏览器解析 HTML1.…

21年-自研-笔试题

目录背景题目1、Object的常用方法2、 和 equals 的区别是什么&#xff1f;equals3、以下代码的运行结果4、以下代码的运行结果5、String, StringBuilder&#xff0c;StringBuffer6、ArrayList和LinkedList7、一些常用的线程安全的集合类8、以下代码的运行结果9、完成下面的代码…

Java环境准备——JDK下载和安装、IDEA下载和安装

一、JDK下载及安装 1、必要性&#xff1a;JDK是整个Java开发的核心。 2、下载网址&#xff1a;Java Downloads | Oracle 3、选择下载JDK17的原因&#xff1a;JDK17 是Java的长期支持版本。 4、下载到本地后&#xff0c;双击进行安装&#xff0c;然后点击下一步&#xff0c;安…

AI物品分类识别管理系统uniapp源码带文档教程

技术架构 技术框架&#xff1a;SpringBoot2 Mysql5.7 Mybatis-Plus uniapp Swagger2 RuoYi-fast swagger-bootstrap-ui 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 百度智能云平台服务 本地api接口端搭建教程 后端需要准备相关的IDE和JDK8开发环境 , 前…

GIT技巧

目录 基础命令 commit 、branch merge rebase 高级特性 自由修改提交树 cherry-pick rebase 远程仓库命令 基础命令 commit 、branch Git Commit Git 仓库中的提交记录保存的是你的目录下所有文件的快照&#xff0c;就像是把整个目录复制&#xff0c;然后再粘贴一样…

Linux内核中ideapad-laptop.c文件全解析6

接前一篇文章《Linux内核中ideapad-laptop.c文件全解析5》&#xff0c;地址为&#xff1a; Linux内核中ideapad-laptop.c文件全解析5_蓝天居士的博客-CSDN博客 上一篇详细分析了ideapad_debugfs_init&#xff0c;本篇详细分析ideapad_input_init。 ideapad_input_init ideap…

Word控件Spire.Doc 【图像形状】教程(7): 如何使用 C# 在 Word 中替换图像

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

b站黑马JavaScript的Ajax案例代码——聊天机器人案例

目录 目标效果&#xff1a; 更换的新接口&#xff1a; 1.机器人智能回复接口&#xff1a;http://www.liulongbin.top:3006/api/robot 2.机器人语音接口&#xff1a;http://www.liulongbin.top:3006/api/synthesize 重点原理&#xff1a; 1.jQuery中trim方法 2.jquery中a…

Hive数据查询语言-DQL-含示例演练(Select查询数据、Join查询)

文章目录1. Select查询数据1.1 基础语法1.1.1 select_ecpr1.1.2 ALL、DISTINCT1.1.3 WHERE1.1.4 分区查询、分区裁剪1.1.5 GROUP BY1.1.6 HAVING1.1.7 LIMIT1.1.8 执行顺序1.2 高阶语法1.2.1 ORDER BY1.2.2 CLUSTER BY1.2.4 Union联合查询1.2.5 from子查询&#xff08;Subqueri…

Allegro自动沿着目标任意形状走线操作指导

Allegro自动沿着目标任意形状走线操作指导 Allegro有个非常好用的功能,支持自动沿着目标任意形状走线,对于异形板框走线尤其方便,以下图为例,需要沿着这个外形走一段线 具体操作如下 点击add connect命令 点击空白处 鼠标右击选择contour命令 出现一个对话框,当前是…

03【Spring AOP、CGBLIB代理】

文章目录03【Spring AOP、CGBLIB代理】一、AOP前奏1.1 案例1.1.1 需求设计1.1.2 需求修改1.1.3 需求增加1.1.4 分析存在的问题1.2 动态代理1.2.1 定义接口&#xff1a;1.2.2 日志代理类1.2.3 缓存代理类&#xff1a;1.2.4 测试类二、AOP2.1 AOP 概述2.1.1 纵向编程2.1.2 纵横配…

【Java进阶篇】第六章 IO流

文章目录一、IO流的概述1、流2、流的分类3、Java IO流的四大块4、流的两大特性5、java.io包下的16个常用流二、文件专属流1、java.io.FileInputStream2、java.io.FileOutputStream3、java.io.FileReader4、java.io.FileWriter三、缓冲流与转换流1、java.io.BufferedReader2、ja…

【面试题】深度解析Java多线程中的 run() 与 start() 有什么区别?

【面试题】深度解析Java多线程中的 run() 与 start() 有什么区别&#xff1f; 大多数人的回答 start() run() 深入底层源码的解析 run() 与 start() 为什么我们不能直接调用 run() 方法&#xff1f; 如何证明 start() 会调用 run() 方法&#xff1f; JVM -> OS执行全…

Nodejs -- 数据库基本概念的介绍及在Express中操作数据库

文章目录1. 数据库的基本概念1.1 什么是数据库1.2 常见的数据库及分类1.3 传统型数据库的数据组织结构1.3.1 Excel的数据组织结构1.3.2 传统型数据库的数据组织结构1.3.3 实际开发中库、表、行、字段的关系2. 在Express中操作MySQL2.1 在项目中操作数据库的步骤2.2 安装与配置m…

Java编程案例:买飞机票

编程案例&#xff1a; 一、目的 复习前半段课程学习的Java编程知识&#xff0c;能够使用所学的知识解决问题&#xff0c;提升同学们的编程能力。 二、涉及到的知识点 变量、数组。运算符&#xff1a;基本运算符、关系运算符、逻辑运算符…程序流程控制&#xff1a;if、switc…

np.meshgrid()函数

文章目录(1)自己理解(2)官方解释(3)参数:3.1 x1, x2,…, xn:array_like3.2 sparse:bool, optional 默认false3.3 copy:bool, optional(1)自己理解 np.meshgrid(a, b,indexing "xy") 函数会返回 b.shape() 行 &#xff0c;a.shape() 列的二维数组。 因此 i, j 都是 …

【序列召回推荐】(task6)多兴趣召回Comirec-SA

note Comirec-SA基于attention的多兴趣建模&#xff0c;论文中先通过attention提取单一兴趣&#xff0c;再推广到多兴趣建模。另外使用贪心算法优化带有准确度多样性的目标函数。DR把MIND的attention换成argmax&#xff08;还有初始化方式不同、序列胶囊到兴趣胶囊用可学习权重…