二分答案思想下的二进制问题

序列合并

题目描述

给定一个长度为 n n n 的非负整数序列 { a n } \{a_n\} {an},你可以进行 k k k 次操作,每次操作你选择两个相邻的数,把它们合并成它们的按位或。

形式化地,一次操作中,你选择一个下标 i i i 1 ≤ i < n 1 \le i < n 1i<n),然后把原序列变成 { a 1 , a 2 , ⋯ , a i or ⁡ a i + 1 , a i + 2 , ⋯ , a n } \{a_1,a_2,\cdots,a_i \operatorname{or} a_{i+1},a_{i+2},\cdots,a_n\} {a1,a2,,aiorai+1,ai+2,,an}

k k k 次操作后所有数按位与的最大值。

输入格式

第一行包含两个正整数 n , k n,k n,k

第二行包含 n n n 个非负整数,其中第 i i i 个非负整数为 a i a_i ai

输出格式

输出一行,包含一个正整数,代表答案。

【数据范围】

  • 对于 25 % 25\% 25% 的数据, n ≤ 20 n \le 20 n20
  • 对于另外 25 % 25\% 25% 的数据, k = n − 2 k=n-2 k=n2

对于所有数据,保证 1 ≤ k < n ≤ 2 × 1 0 5 1 \le k<n \le 2 \times 10^5 1k<n2×105 0 ≤ a i < 2 30 0 \le a_i < 2^{30} 0ai<230

思路

对于这种给定一个序列,,定义其价值为序列最终其相/的值时,我们往往可以考虑去枚举最终的答案是否合法。
具体操作为,我们枚举答案二进制表示下的每一位,因为是尽可能的让答案更大,所以我们去枚举当前位为1时是否合法即可。
综上思路就和二分答案有些类似,所以这一类题的关键就在于如何 check 每次枚举的答案。
对于这一题,我们可以发现,对一个序列进行k次合并,等价于将其划分成 n − k n-k nk 个子段,现在题目变为了对于每个子段 x i x_i xi ,其最终相与的值是否能为 x x x ,那么对于每个子段的 x i x_i xi 而言,x 二进制表示上为 1 的位置, x i x_i xi 对应的位置也得为 1,所以我们的思路为,使用一个变量 s s s 去记录当前子段内部相或的值,若 s & x = x s\&x = x s&x=x ,那么则清空 s s s,子段数加一,最后判断子段数是否大于 n − k n-k nk 即可。

#include <bits/stdc++.h>using namespace std;
const int N = 1e5 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> ar;
int mod = 998244353;
const int maxv = 4e6 + 5;
// #define endl "\n"void solve()
{int n,k;cin>>n>>k;vector<int> a(n);for(auto &ai: a) cin>>ai;ll ans=0;auto check=[&](int x){int s=0;int cnt=0;for(int i=0;i<n;i++){s|=a[i];if((s&x)==x){s=0;cnt++;}}return cnt>=n-k;};for(int i=31;i>=0;i--){ll res=ans+(1<<i);if(check(res)){ans=res;}}cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t = 1;// cin >> t;while (t--){solve();}system("pause");return 0;
}

牛客小白月赛94 E,F

在这里插入图片描述

思路:

这题和上面一题类似,也是求一些数相与的最大值,我们可以去枚举答案的每一位,去check当前这一位放 1 后是否合法即可。
这题的 check 比上一题还简单,即若当前的价值为当前枚举答案 x x x 的子集,我们变把他放入,最后看体积是否合法即可。

#include <bits/stdc++.h>using namespace std;
const int N = 1e5 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 998244353;
const int maxv = 4e6 + 5;
// #define endl "\n"void solve()
{int n,k;cin>>n>>k;vector<int> v(n+5),w(n+5);for(int i=1;i<=n;i++) cin>>v[i]>>w[i];ll ans=0;auto check=[&](int x){ll sum=(1ll<<32)-1;for(int i=1;i<=n;i++){if((w[i]&x)==x){sum&=v[i];}}return sum<=k;};for(int i=31;i>=0;i--){ll res=ans+(1<<i);if(check(res)){ans=res;}}cout<<ans<<endl;
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t = 1;// cin >> t;while (t--){solve();}system("pause");return 0;
}

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

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

相关文章

李廉洋:5.29黄金原油持续震荡,今日美盘行情走势分析及策略。

黄金消息面分析&#xff1a;美联储理事鲍曼周二表示&#xff0c;她支持要么先等等再开始放缓缩减资产负债表&#xff0c;要么采取比本月早些时候宣布的更温和的放慢缩表进程。鲍曼认为商业银行准备金水平仍然充足&#xff0c;这让官员们有更多时间来推进缩表进程。“在准备金接…

你的手机是如何控制你的手表之广播篇

前言 要让手机能够控制手表&#xff0c;第一步当然要让手机能够“看见”手表&#xff0c;人类作为上帝视角&#xff0c;我们是能够通过眼睛直接看见手机和手表的&#xff0c;但要让手机“看见”手表&#xff0c;就需要一端把自己的信息通过电磁波的形式发往空中&#xff0c;另…

Excel中怎样将第一行建立好的规则套用到每一行?

考虑使用条件格式来完成&#xff0c;有两种方式可以尝试&#xff1a; 一、一次性创建条件格式 1.选中需要设置条件格式的区域&#xff0c;如果是不连续的区域&#xff0c;可以按住Ctrl键&#xff0c;然后用鼠标依次选中需要的数据区域 2.点击 开始选项卡&#xff0c;条件格式…

解决Plugin ‘maven-clean-plugin:3.1.0‘ not found的问题

1. 问题描述 当导入别人的Maven项目时&#xff0c;可能会出现Plugin maven-clean-plugin:3.1.0 not found的错误信息。 2. 解决方案 2.1 方案一 检查自己的Maven仓库地址是否正确&#xff0c;一般引入其他人的项目时&#xff0c;Maven仓库的目录以及配置都会是别人的&#xff…

Broker的主从架构

为了保证MQ的数据不丢失而且具备一定的高可用性&#xff0c;所以一般都是得将Broker部署成Master-Slave模式的&#xff0c;也就是—个Master Broker对应一个Slave Broker Master需要在接收到消息之后&#xff0c;将数据同步给Slave&#xff0c;这样一旦Master Broker挂了&#…

新能源汽车为乙炔炭黑行业带来了发展机遇

新能源汽车为乙炔炭黑行业带来了发展机遇 乙炔炭黑&#xff08;Acetylene carbon black&#xff09;又称乙炔黑&#xff0c;外观为黑色极细粉末&#xff0c;相对密度1.95&#xff08;氮置换法&#xff09;&#xff0c;纯度很高&#xff0c;含碳量大于99.5%&#xff0c;氢含量小…

Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同?

作者&#xff1a;zhang siege 链接&#xff1a;https://www.zhihu.com/question/20400700/answer/91106397 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 首先&#xff0c;泛型的出现时为了安全&#xff0c;所有与…

VSCode安装platformio插件

文章目录 一、安装VSCode二、安装platformio&#xff08;一&#xff09;整理文件夹&#xff08;二&#xff09;整理Python环境&#xff08;三&#xff09;安装platformio 三、创建ESP8266项目四、使用命令行创建项目五、创建项目太久怎么办六、参考链接 一、安装VSCode VSCode…

AIGC笔记--基于PEFT库使用LoRA

1--相关讲解 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS LoRA 在 Stable Diffusion 中的三种应用&#xff1a;原理讲解与代码示例 PEFT-LoRA 2--基本原理 固定原始层&#xff0c;通过添加和训练两个低秩矩阵&#xff0c;达到微调模型的效果&#xff1b; 3--简单代…

AIGC 009-DaLLE2遇见达利!文生图过程中另外一种思路。

AIGC 009-DaLLE2遇见达利&#xff01;文生图过程中另外一种思路。 0 论文工作 首先&#xff0c;遇见达利是我很喜欢的名字&#xff0c;达利是跟毕加索同等优秀的画家。这个名字就很有意思。 这篇论文提出了一种新颖的分层文本条件图像生成方法&#xff0c;该方法利用 CLIP&…

DolphinScheduler 3.3.0版本更新一览

Apache DolphinScheduler即将迎来3.3.0版本的发布&#xff0c;届时将有一系列重要的更新和改进。在近期的社区5月份用户线上分享会上&#xff0c;项目PMC 阮文俊为大家介绍了3.3.0版本将带来的主要更新和改进&#xff0c;并为大家指出了如何参与社区的方式。 什么是DolphinSch…

四川古力未来科技抖音小店安全靠谱,购物新体验

在数字化浪潮席卷而来的今天&#xff0c;电商行业蓬勃发展&#xff0c;各种线上购物平台如雨后春笋般涌现。其中&#xff0c;抖音小店凭借其独特的短视频直播购物模式&#xff0c;迅速赢得了广大消费者的青睐。而四川古力未来科技抖音小店&#xff0c;更是以其安全靠谱、品质保…

ARM鲲鹏920-oe2309-caffe

参考链接:Caffe | Installation 安装依赖包 dnf install dnf update dnf install leveldb-devel snappy-devel opencv.aarch64 boost-devel hdf5-devel gflags-devel glog-devel lmdb-devel openblas.aarch64 dnf install git wget tar gcc-g unzip automake libtool autoco…

网工内推 | 高校、外企网工,IE认证优先,年薪最高18w

01 上海外国语大学贤达经济人文学院 &#x1f537;招聘岗位&#xff1a;高校网络主管 &#x1f537;职责描述&#xff1a; 1、负责总机房、网络规划及管理&#xff0c;包括容量规划、成本评估、建设管理等; 2、负责设计、实施及维护全网络架构及规划网络变更计划 3、负责网络功…

VMware ESXi 兼容性查询

官网兼容性查询地址&#xff1a;https://www.vmware.com/resources/compatibility/search.php

优选免单:重塑电商销售模式的新策略

随着电商行业的不断发展&#xff0c;一种名为“优选免单”的新兴销售模式正逐渐崭露头角。该模式以独特的价格策略、创新的奖励机制和巧妙的社交网络应用为核心&#xff0c;成功激发了消费者的购买热情&#xff0c;并实现了销售的高速增长。 一、规范运营&#xff0c;避免潜在风…

【网络协议】应用层协议HTTPS

文章目录 为什么引入HTTPS&#xff1f;基本概念加密的基本过程对称加密非对称加密中间人攻击证书 为什么引入HTTPS&#xff1f; 由于HTTP协议在网络传输中是明文传输的&#xff0c;那么当传输一些机密的文件或着对钱的操作时&#xff0c;就会有泄密的风险&#xff0c;从而引入…

【进程空间】通过页表寻址的过程

文章目录 前言介绍页表、页框、页目录的概念页框页表页目录页表和页目录的分配 一级页表和二级页表一级页表寻址过程 二级页表寻址过程 一级页表和二级页表的对比 前言 我们知道每个进程都有属于自己的虚拟地址空间&#xff0c;且每个进程的虚拟地址都是统一的。要想通过虚拟地…

数据结构(七)递归、快速排序

文章目录 一、递归&#xff08;一&#xff09;使用递归实现1~n求和1. 代码实现&#xff1a;2. 调用过程&#xff1a;3. 输出结果&#xff1a; &#xff08;二&#xff09;青蛙跳台阶问题1. 问题分析2. 代码实现3. 输出结果4. 代码效率优化5. 优化后的输出结果 二、快速排序&…

Euler 欧拉系统介绍

Euler 欧拉系统介绍 1 简介重要节点与版本EulerOS 特色EulerOS 与 openEuler 区别联系Euler 与 HarmonyOS 区别联系 2 openEuler特色支持 ARM&#xff0c;x86&#xff0c;RISC-V 等全部主流通用计算架构融入 AI 生态嵌入式实时能力提升引入 OpenHarmony 一些突出功能 参考 1 简…