当前位置: 首页 > news >正文

codeforces 1851F

题目链接

题目大意:给你一个长度为n的数组a, 和一个整数k(2<=n<=2e5, k<=30, a[i]<=pow(2,k))。
任选一个x,求(a[i] ^ x) & (a[j] ^ x) 的最大值(1<=i,j<=n, i!=j, x<=pow(2,k))。

由于中间有个&,所以我们要求两个数最高位尽量相等,所以a[i]和a[j]的最高位也要尽量相等,
然后可以通过x的构造最大值,可以想到我们肯定想让结果的最高位为1,
那么x与另外两个数的高位就要不同,但是可以想到当a[i]和a[j]某一位不同时,x这位的取值就不重要了。
要求a[i]和a[j]尽量相等的结果,可以转化为求最小异或和问题。
最小异或和只需要排个序即可。 

void solve() {int n, k;cin >> n >> k;vector<int> a(n), p(n);for (int i = 0; i < n; i++) {cin >> a[i];p[i] = i;}sort(p.begin(), p.end(), [&](int i, int j) {return a[i] < a[j];});int i = -1, j = -1, x = -1;int ans = 1 << k;for (int t = 1; t < n; t++) {if(ans > (a[p[t]] ^ a[p[t - 1]])) {ans = a[p[t]] ^ a[p[t - 1]];i = p[t] + 1;j = p[t - 1] + 1;x = ((1 << k) - 1) ^ (a[p[t]] | a[p[t - 1]]);}}cout << i << ' ' << j << ' ' << x << "\n";
}

 

http://www.lryc.cn/news/246792.html

相关文章:

  • js把格式为YYYY-MM-DD HH:mm:ss的时间转换为UTC时间ISO 8601格式
  • 使用 Java 来读取 Excel 文件,检查每一行中的 URL,并将不符合条件的行标记为红色
  • 雷达公式实现(matlab)
  • CMake构建一个转换为3d tile的开源代码成功
  • Java线程通信
  • 计算4人队形的最可能分布
  • 如何解决 Java 中的 IllegalArgumentException 异常?
  • Vue 双向数据绑定
  • 电脑开机过程中,程序的启动的顺序是怎么样的?
  • JSON详细教程
  • DSP介绍及CCS
  • 周期串(Periodic Strings)
  • C语言——猜凶手
  • 【TiDB】TiDB离线方式部署
  • android shape绘制半圆
  • 【开源】基于Vue和SpringBoot的个人健康管理系统
  • qt QString字符串常用转换
  • JAVA sql 查询3
  • PHP while 和 do-while 循环 学习资料
  • OpenJudge NOI 1.8 16:矩阵剪刀石头布 c语言
  • mysql 性能参数调优详解
  • 基于.net framework4.0框架下winform项目实现寄宿式web api
  • Vue中项目进行文件压缩与解压缩 (接口返回文件的url压缩包前端解析并展示出来,保存的时候在压缩后放到接口入参进行保存)
  • Linux shell编程学习笔记31:alias 和 unalias 操作 命令别名
  • Django JSONField/HStoreField SQL注入漏洞(CVE-2019-14234)
  • Unity中Shader的Standard材质解析(一)
  • 5.1 Windows驱动开发:判断驱动加载状态
  • Linux之高级IO
  • 进程和线程的关系
  • YOLOv5全网独家改进:NanoDet算法动态标签分配策略(附原创改进代码),公开数据集mAP有效涨点,来打造新颖YOLOv5检测器