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

Codeforces Round 1009 (Div. 3) C(位掩码)

2025.3.22

Problem - C - Codeforces

C. XOR and Triangle(位掩码)

请判断是否存在满足以下条件的整数 y。

  • y 严格小于 x 。
  • 存在一个边长为 x , y , x ⊕ y x \oplus y xy 的非退化三角形 。这里, ⊕ \oplus 表示 bitwise XOR 运算。

此外,如果存在这样一个整数 y ,则输出任意一个。

思路

三角形:最小两边之和大于第三边

由于y<x,所以此题只需保证:

y+ x ⊕ y x \oplus y xy > x

x + y x+y x+y > x ⊕ y x\oplus y xy


行文至此,不得不提一下zx的至理名言

异或是不进位加法

所以一般情况下, x + y x + y x+y大于 x ⊕ y x \oplus y xy

  • x + y = x ⊕ y + 2 ( x & y ) x+y=x \oplus y+2(x\&y) x+y=xy+2(x&y)

这就是位屏蔽的神奇。


  • x+y>x⊕y , (x⊕y)+2(x&y)>x⊕y , x&y>0 ;
  • y+(x⊕y)>x , y+(x+y)−2(x&y)>x , y>x&y 。
  1. y y y包含至少一个在 x x x中打开的位
    这意味着 y y y至少有一个位与 x x x的某一位相同,即 y & x ≠ 0 y \& x \neq 0 y&x=0
  2. y y y至少包含一个在 x x x中未开启的位
    这意味着 y y y至少有一个位是 x x x中没有的,即 y & ¬ x ≠ 0 y \& \neg x \neq 0 yx=0,其中 ¬ x \neg x ¬x表示x的按位非。

寻找满足条件的最小 y y y
为了找到满足上述条件的最小的 y y y,我们可以考虑只有两个位被打开的情况,一个在 x x x中,另一个不在。这样,我们只需要检查所有可能的两位组合,这是一个 O ( log ⁡ 2 x ) \mathcal{O}(\log^2 x) O(log2x)的时间复杂度,因为x的位长度是 log ⁡ 2 x \log_2 x log2x

void solve()
{
	int x,ans=-1;
	cin>>x;
	fir(i,0,30)
	fir(j,0,30)
	{
		int p=(1<<i)|(1<<j);
		if((p<x)&&((x&p)!=0)&&((p&(~x))!=0))
		ans=p;
	}
	cout<<ans<<'\n';
}

注意:运算符的优先级

x / %

±

<< >>

< <= > >=

== !=

&

^

|

&&

||

?:

+= = /= 等赋值运算符

相关文章:

  • 图解AUTOSAR_SWS_IOHardwareAbstraction
  • C++可变参数
  • 【Python】pillow库学习笔记3-Image.mode
  • canvas学习:如何绘制带孔洞的多边形
  • 详细存储与相关接口协议?
  • Vue项目的 Sass 全局基础样式格式化方案,包含常见元素的样式重置
  • 头歌实践教学平台--【数据库概论】--SQL
  • VUE3 路由配置
  • Apifox下载安装
  • 【C++】C++中的动态内存分配(new和delete)
  • 2025前端面试题(vue、react、uniapp、微信小程序、JS、CSS、其他)
  • 从零构建大语言模型全栈开发指南:第二部分:模型架构设计与实现-2.2.1从零编写类GPT-2模型架构(规划模块与代码组织)
  • 详细介绍RECT结构体
  • 09_从经典论文入手Seq2Seq架构
  • spring-security原理与应用系列:核心过滤器
  • 设置 Ollama 模型下载位置
  • Spring 线程
  • 微信小程序如何接入直播功能
  • [leetcode]map的用法
  • SpringBoot-配置文件中敏感信息的加密保姆级教程
  • 泰安高端网站建设/会计培训班一般多少钱
  • 家政服务公司网站源码/博客是哪个软件
  • 义乌小商品市场进货渠道/如何进行关键词优化工作
  • 漂亮公司网站源码打包下载/长沙营销推广
  • 武汉网站排名提升/哈尔滨网络seo公司
  • 阳江网雨大医院/网站seo快速优化技巧