异或三角形(数位dp)

异或三角问题解析:从位运算到数位DP的算法精解 位运算作为计算机科学的基础操作,其核心原理在于对二进制位的直接操作,其中异或运算因其‘相同为0,不同为1’的特性,在数据加密、校验和及算法优化中具有重要技术价值。理解异或的数学性质,如归零律和结合律,是将其应用于复杂问题建模的关键。在算法竞赛与工程实践中,常需处理满足特定位运算约束的组合计数问题,这自然引出了数位动态规划这一高效解决方案。数位DP通过逐位构造数字并记忆化状态,能够将对庞大空间的枚举转化为多项式时间复杂度的搜索,完美应对‘异或三角’这类要求统计满足异或归零与三角形不等式的三元组数量问题。本文以 阅读详情

异或三角形

[Link](异或三角 - 蓝桥云课 (lanqiao.cn))

参考:2021蓝桥杯国赛-J异或三角形-数位dp_塔子哥来了的博客-优快云博客_蓝桥杯数位dp

题意

给定 T T T个数 n 1 , n 2 , . . . , n T n_1,n_2,...,n_T n1​,n2​,...,nT​,对每个 n i n_i ni​请求出有多少组 a , b , c a,b,c a,b,c满足:

  1. 1 ≤ a , b , c ≤ n i 1\le a,b,c\le n_i 1≤a,b,c≤ni​
  2. a ⊕ b ⊕ c = 0 a\oplus b\oplus c =0 a⊕b⊕c=0
  3. 长度为 a , b , c a,b,c a,b,c的三条边能组成一个三角形

思路

  • 数位 d p dp dp

​ 涉及 ⊕ \oplus ⊕一般从二进制看比较好,对于 a ⊕ b ⊕ c = 0 a\oplus b\oplus c=0 a⊕b⊕c=0这个限制我们发现 a , b , c a,b,c a,b,c三个数一定是不同的,三个边组成一个三角形即保证 m a x ( a , b , c ) × 2 < a + b + c max(a,b,c)\times 2<a+b+c max(a,b,c)×2<a+b+c,由于不好确定哪个边是最大的,这里我们假设 a a a是最长边,答案就是 a a a为最长的情况 × 3 \times 3 ×3即可。

​ 已知 a a a为最长边,我们可以按二进制从高到底枚举 a , b , c a,b,c a,b,c每一位选什么,由于 a ⊕ b ⊕ c = 0 → c = a ⊕ b a\oplus b\oplus c=0 \to c=a\oplus b a⊕b⊕c=0→c=a⊕b,因此我们只需枚举 a , b a,b a,b每一位选择什么即可, c c c可由 a , b a,b a,b的情况推出,下面将我们题目的限制转化为对应二进制选法的限制(假设每一位的选法为 ( a i , b i ) (a_i,b_i) (ai​,bi​)即 a , b a,b a,b这一位是 0 0 0还是 1 1 1):

  1. a > b a>b a>b: 由于 a a a 是最大的,因此我们要保证 ( 1 , 0 ) (1,0) (1,0)出现在 ( 0 , 1 ) (0,1) (0,1)前面
  2. a > c a >c a>c: c i = a i ⊕ b i c_i=a_i\oplus b_i ci​=ai​⊕bi​,我们要保证 ( 1 , 1 ) (1,1) (1,1)出现在 ( 0 , 1 ) (0,1) (0,1)前面,因为 ( 1 , 1 ) (1,1) (1,1)的时候 c i = 0 c_i=0 ci​=0这样 a > c a>c a>c就成立, ( 0 , 1 ) (0,1) (0,1)的时候 c i = 1 , a i = 0 c_i=1,a_i=0 ci​=1,ai​=0如果先出现 a < c a<c a<c就与假设相反了
  3. 1 ≤ a ≤ n 1\le a\le n 1≤a≤n: 枚举的时候注意上界即可
  4. a < b + c a<b+c a<b+c: a = b ⊕ c → b ⊕ c < b + c a=b\oplus c\to b\oplus c < b + c a=b⊕c→b⊕c<b+c,即存在 ( 0 , 1 ) (0,1) (0,1),因为这时 a i = 0 , b i = 1 , c i = 1 a_i=0,b_i=1,c_i=1 ai​=0,bi​=1,ci​=1,对于第 i i i位 b i ⊕ c i = 0 b_i\oplus c_i=0 bi​⊕ci​=0,因此一定小于 b + c b+c b+c

综上所述:我们只需满足 ( 0 , 1 ) (0,1) (0,1)出现在 ( 1 , 0 ) , ( 1 , 1 ) (1,0),(1,1) (1,0),(1,1)后面,且 ( 0 , 1 ) , ( 1 , 0 ) , ( 11 ) (0,1),(1,0),(11) (0,1),(1,0),(11)均出现即可。

对于 ( a , b ) (a,b) (a,b)的三种情况用二进制来状压一下, 1 : ( 0 , 1 ) , 2 : ( 1 , 0 ) , 3 : ( 1 , 1 ) 1:(0,1),2:(1,0),3:(1,1) 1:(0,1),2:(1,0),3:(1,1),考虑数位 d p dp dp: f [ u ] [ l i m i t ] [ s t a t e ] : f[u][limit][state]: f[u][limit][state]: 前 u u u位,是否有限制,且当前状态为 s t a t e state state的方案数,记忆化搜索写一下就可以了。

数位 d p dp dp的一般写法可以参考一下大佬的讲解:[Link](数位DP笔记(DFS做法) - AcWing)

Code

#include <bits/stdc++.h>
#define x first
#define y second
#define debug(x) cout<<#x<<":"<<x<<endl;
using namespace std;
typedef long double ld;
typedef long long LL;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
typedef unsigned long long ULL;
const int N = 1e5 + 10, M = 2 * N, INF = 0x3f3f3f3f, mod = 1e9 + 7;
const double eps = 1e-8, pi = acos(-1), inf = 1e20;
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int h[N], e[M], ne[M], w[M], idx;
void add(int a, int b, int v = 0) {
	e[idx] = b, w[idx] = v, ne[idx] = h[a], h[a] = idx ++;
}
int m, k;
LL n;
int a[N], cnt;
LL f[31][2][8];
LL dfs(int u, int limit, int state) {
	if (!u) return state == 7;
	LL &t = f[u][limit][state];
	if (~t) return t;	
	LL res = 0;
	int up = limit ? a[u] : 1;

	for (int i = 0; i <= up; i ++) 
		if (!i) {
			res += dfs(u - 1, limit && i == up, state);
			if (state >= 6) 
			res += dfs(u - 1, limit && i == up, state | 1);
		}
		else {
			res += dfs(u - 1, limit && i == up, state | 2);
			res += dfs(u - 1, limit && i == up, state | 4);
		}
	
	return t = res; 	
}
LL dp(LL x) {
	cnt = 0;
	memset(f, -1, sizeof f);	
	while (x) {
		a[++cnt] = x & 1;
		x >>= 1;		
	}	
	return dfs(cnt, 1, 0) * 3;
}
int main() {
	ios::sync_with_stdio(false), cin.tie(0);
	int T;
	cin >> T;
	while (T -- ) {		
		cin >> n;
		cout << dp(n) << '\n';
	}
	return 0;
}

​

多模态RAG实战:为LLM装上视觉之眼,实现图文混合文档智能问答 检索增强生成(RAG)技术通过结合外部知识库,有效缓解了大语言模型(LLM)的幻觉问题,并扩展了其知识边界。其核心原理是将文档切分、向量化后存入向量数据库,在问答时通过语义检索召回相关上下文,辅助LLM生成更精准的答案。这项技术的核心价值在于,它为大模型应用提供了一种低成本、高效率的知识注入与实时更新方案,广泛应用于智能客服、知识库问答、文档分析等场景。随着应用深入,纯文本RAG在处理产品手册、学术论文、设计图纸等富含视觉信息的文档时面临瓶颈。本文聚焦的**多模态RAG**和**视觉理解**技术,正是为了解 阅读详情

相关推荐

四足机器人机械结构设计:从腿型到驱动的全面解析

本文全面解析了四足机器人机械结构设计的核心要点。资深工程师老张深入探讨了并联腿与串联腿的选型策略、不同腿型布局对稳定性的影响,并详细对比了皮带轮与连杆驱动方式的优劣。文章结合实战经验,强调了足端设计、材料选择及整体结构轻量化等关键细节,为机器人开发者提供了从理论到实践的宝贵指导。

assembly8low的博客 633

异或三角-----蓝桥杯

大家蓝桥杯国赛一起加油!!!t=N4P3异或三角https://blog.youkuaiyun.com/a12377978/article/details/124893215#comments_26867660。

seventeena的博客 412

基于Java的高校校园点餐系统

本文介绍了一个基于Java技术开发的高校校园点餐系统,该系统以B/S结构为基础,采用MySQL作为数据库,实现了一个高效、便捷的在线点餐平台。系统主要面向三类用户:管理员、用户和食堂工作人员,提供包括用户管理、食堂管理、菜单管理、订单管理等在内的多项功能。通过系统的具体测试,验证了其可行性和有效性,为高校师生提供了一个科学化、系统化的点餐服务。高校校园点餐系统的开发和实现,不仅提高了校园餐饮服务的效率和质量,也为师生提供了一个更加便捷的点餐体验。

a632341031的博客 840

【蓝桥刷题】备战国赛——异或三角

🏆2021蓝桥杯国赛真题:异或三角,异或是一种逻辑运算符,用于比较两个二进制数中每个位的状态,如果两个数的状态不同,则结果为1,因此,对于此类每一个数位上满足某种条件关系的问题,可以用数位。确定,又因为三个数可以按任意顺序排列,所以,我们不妨假设。之前,则这两列排列后,b在该数位上的数大于a,此时出现了。其次,对于三个数字,我们不可能对每个数字上的每一位进行。深搜,从而得到所有可能的情况,因为涉及二进制异或操作。题,同时对思维要求也很高,今天的考点是~的情况,则在该数位上三个数异或后为。个条件

DAY I 的成长之路 1350

关于SVPWM七段式五段式调制后的相电压和线电压波形——大疆DJI技术笔试

1.SVPWM七段式/五段式调制的相电压和线电压波形 脉宽调制(PWM)在并网变流技术中得到了广泛的应用。与正弦脉宽调制(SPWM)的控制方法相比,SVPWM方法具有直流侧电压利用率高,电压谐波小,易于数字化实现等显著的优点,从而使SVPWM在实际的应用中越来越普遍。TMS320F28335是32位浮点的DSP控制器,具有150MHz的高速处理能力,18路PWM输出,与前几代数字信号控制器相比,性能平均提高了50%。其中具体的SVPWM理论实现的原理,请参考我的博客永磁同步电机的矢量控制策略(七)一一一SV

昔时扬尘处 2万+

一文详解声码器

声码器(Vocoder)是语音信号处理领域的核心技术,其本质是通过“分析 - 参数化 - 合成” 的闭环流程,实现语音的高效编码、转换或生成。它不仅是早期语音通信的关键工具,更是现代 AI 语音技术(如 TTS、语音转换)的核心组件。以下从原理、技术分类、关键模块、应用及发展趋势展开详细解析。

weixin_41413777的博客 1354

蓝桥杯2021国赛-异或三角

蓝桥杯2021国赛-异或三角

qq_40329819的博客 852

告别示教器!用C#和ABB PC SDK 6.08打造你的第一个Windows机器人控制台(附完整连接代码)

本文详细介绍了如何使用C#和ABB PC SDK 6.08开发Windows机器人控制台应用,实现无示教器的机器人控制。从环境配置、SDK引用到机器人发现、连接及状态监控,提供了完整的代码示例和架构设计建议,帮助开发者快速掌握上位机控制技术。

weixin_29758911的博客 323

2021蓝桥杯国赛-J异或三角形-数位dp

题目大意: t组询问,每次询问一个数n.问你有多少个三元组(a,b,c)(a,b,c)(a,b,c)满足: 1.a,b,c∈[1,n]a,b,c \in [1,n]a,b,c∈[1,n] 2.a⊕b⊕c=0a \oplus b \oplus c = 0a⊕b⊕c=0 3.a,b,ca,b,ca,b,c构成三角形 思路1:sosdp 第二个条件告诉我们,其实我们只需要循环前两个数,第三个数是确定的. 第三个条件等价于:两个小的数相加大于第三个数. 那么对此,我们容易得出(枚举两个数a,b): 1.当b为a的子

qq_35577488的博客 9755

第3.1.3章 机器人第三方库实战总结:ROS 2 入门实战及和ROS1的对比,打通机器人开发的任督二脉

本文针对机器人SLAM开发中第三方库的学习痛点,重点介绍ROS 2在SLAM中的应用。文章首先对比ROS 1与ROS 2的核心差异,梳理ROS 2知识图谱,包括节点、话题、服务等核心概念。通过实战项目演示如何构建激光SLAM节点,结合代码详解运行流程。最后给出学习建议,强调动手实践的重要性,帮助开发者快速掌握ROS 2在SLAM开发中的关键应用。

行知SLAM 181

Android14 SystemUI如何实现下拉菜单栏高斯模糊背景效果(类似于毛玻璃效果)

我们都知道,从Android12起,下拉菜单栏控制中心都是黑色的,看起来非常不美观,而且国内的手机系统UI都做的比较美观,大部分的下拉菜单UI背景都是实现了高斯模糊效果,所以客户也会要求实现类似于这样的效果。在以前的Android项目中,实现下拉菜单栏的模糊背景就是通过截图的方式进行替换背景,而这种方式下拉菜单背景极易替换不了,就算是在各个地方都适配,还是有概率在复杂场景或者一些测试手法下出现背景是黑的情况,并且这种方式还比较影响性能,毕竟每次都要去截图一次,多做了额外的事。

热衷于Android Framework和系统APP的修改经验分享 1793

蓝桥杯专题-真题版含答案-【三角螺旋阵】【干支记年法】【异或加密法】【金字塔】

有真题,有答案,认认真真阅读,轻轻松松通过。蓝桥在等你。有什么需要欢迎文章底部卡片私我,获取更多支持,交流让学习不再孤单

空名先生 420

TIA protal与SCL从入门到精通(1)——SCL编程入门

SCL语言是由Pascal而生的结构化程序语言,与梯形图相(LAD)比,SCL语言的灵活程度更高,易于编写控制算法。 本教程基于的平台如下 软件:TIA 15.1 CPU 1516 (1)直接创建纯SCL的程序块儿; (2)在LAD/FBD中在插入SCL程序段。 在程序段中直接右击插入即可,但是插入的程序段并不能完全使用SCL语法,GOTO等跳转指令就不能使用。在SCL中一般不能使用绝对地址进...

苦走一口田 7万+

【luogu CF1710C】XOR Triangle(数位DP)

给你一个数 n,要你求有多少个满足条件的 a,b,c 使得它们两两异或得到的三个值可以得到一个非退化三角形。 其中 a,b,c 值域在 0~n 之间。

欢迎您的光顾awa 438

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[蓝桥杯 2021 国 AB] 异或三角

如果k不在后缀处,根据更高位的01数量计算左侧系数。如果k在后缀处,根据更高位的1的数量计算左侧系数。相比之下,我的做题思路复杂,程序丑陋又效率低下。不难发现,满足上列条件的三元组具有以下特征——行, 每行包含一个整数, 表示对应的答案。现有的题解简洁又优美,状态转移方程清晰易懂。边界情况需特殊处理,来个具体数字作为例子,我的方法实在是太复杂了,时间复杂度也不优秀。再分别考虑k是否在后缀处,进行计算。,后缀处01可任取,如果有。个后缀连续1,右侧系数为。个后缀连续1,右侧系数为。个自由空位,系数贡献为。

Meronri&&What it loves 810

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

4月17日

这几天打了两场比赛,看了几篇博客。金马五校赛,主要a了一道数位dp,然后二数这道题与队友贪心了一下。小Y作比赛这一道题倒是知道他的贪心思想,但是当时写不出来,后来看大佬的用双指针遍历。数字游戏这道题居然有人一下一下式样例过了,而且不是一个两个,失策失策。当时想写的怕超时,结果就是暴力加剪枝。昨天打的比赛主要是要注意一下文件输入输出的情况。比赛博客主要有hdu5014,题意:给出一个由0-n这n+1...

qq_37808579的博客 178

从蓝桥杯国赛题解析异或运算与数位DP的深度结合

异或运算作为计算机基础位运算的核心操作之一,其独特的性质(如归零律、交换律)在算法设计中扮演着关键角色。理解异或的数学原理,有助于解决诸如校验和、状态压缩等实际问题。数位动态规划(DP)则是处理大范围数字统计问题的利器,它通过逐位决策和状态记忆化,将指数级复杂度降至对数级。将异或运算的性质与数位DP结合,能够高效解决一类“在数值范围内统计满足特定位运算关系的数对”问题,这在编程竞赛和需要处理大规模位运算逻辑的工程场景中极具价值。本文以一道经典的竞赛题目为切入点,深入剖析了如何利用异或运算的转化(如 a^b^

weixin_34033624的博客 437

从蓝桥杯真题剖析算法竞赛核心:动态规划与数位DP实战

算法竞赛是检验编程与问题解决能力的重要舞台,其核心在于对基础算法思想的深刻理解与灵活运用。动态规划作为一种通过将复杂问题分解为重叠子问题来寻找最优解的经典方法,在解决路径计数、资源分配等问题上具有关键价值。而数位动态规划则是处理与数字位相关约束(如上下界、位运算条件)的高效技术,尤其适用于数据范围极大的场景。掌握这些技术,不仅能有效应对竞赛中涉及状态转移、位运算与组合计数的难题,更是提升工程代码严谨性与优化思维的重要途径。本文以2021年蓝桥杯国赛C++ B组真题为例,通过剖析“质数行者”中的三维动态规划模

weixin_30567225的博客 349

蓝桥杯c++算法秒杀【6】之动态规划【下】(数字三角形、砝码称重(背包问题)、括号序列、异或三角:::非常典型的必刷例题!!!)

给定一个括号序列,要求尽可能少地添加若干括号使得括号序列变得合法,当添加 完成后,会产生不同的添加结果,请问有多少种本质不同的添加结果。两个结果是本质不同的是指存在某个位置一个结果是左括号,而另一个是右括号。例如,对于括号序列 (((),只需要添加两个括号就能让其合法,有以下几种不同的添加结果:()()() 、()(()) 、(())()、(()()) 和 ((()))。输入一行包含一个字符串s,表示给定的括号序列,序列中只有左括号和右括号。

Asuna666w的博客 3430

纯小白蓝桥杯备赛笔记--DAY9(动态规划)

文章目录一、动态规划基础(1)线性DP简介步骤例题数字三角形--1536破损的楼梯-3367安全序列-3423(2)二维DP简介例题摆花--389选数异或--3711数字三角形--505(3)最长公共子序列LCSLCS算法模型最长公共子序列--1189如何求出具体的子序列(4)最长上升子序列LISLIS算法模型例题蓝桥勇士--2049合唱队形--742二、背包问题01背包01背包模型小明的背包--117401背包的优化背包与魔法--2223完全背包完全背包模型小明的背包2--1175多重背包基础模型小明的背

Yhvaely的博客 1514

优快云 第三十七期竞赛题解

优快云 第三十七期竞赛题解

Tonvia的博客 564

每日算法刷题Day87:2.12:leetcode 动态规划8道题,用时3h

$对于所有k≥bk \ge bk≥b,由于c1kc2k⋯ctk0c1k​c2k​⋯ctk​0因此c1k⊕⋯⊕ctk0c1k​⊕⋯⊕ctk​0故异或结果在第bbb位及以上仍为000,从而x2bx < 2^bx2b证毕。

2301_80044595的博客 685

蓝桥杯-动态规划

从下往上(从大到小)更新是为了满足状态转移的依赖关系,确保在计算当前状态时,所依赖的状态已经是最优解。像这样,dp[i]的更新只用到上一层dp[i-1],摆花也可以用滚动数组,减少空间复杂度。dp[i][j]的更新只用到上一层dp[i-1],就可以用滚动数组优化,可以减少空间。相当于把 i 维度消掉,因为我们只需考虑一定体积下最大价值,而不必考虑物品的件数。:从大到小更新是为了控制物品的使用次数,每个物品只能选择一次,避免重复使用。先遍历所有子节点,然后回溯就可以更新父节点的dp,这就是dfs。

m0_75258001的博客 1255

2022“杭电杯”中国大学生算法设计超级联赛(7)题解报告

2022“杭电杯”中国大学生算法设计超级联赛(7)题解报告

m0_66388127的博客 408

bzoj 乱刷计划 50/50

前言 话说第一个板刷计划由于种种原因而告一段落了。。其实那一版还有很多题想做,那就只能放一放了 附上效果图一张(几乎每一题都在我博客有题解): 打算 可以复习,重做自己做过的题,不局限于没做过的 乱刷计划 3223: Tyvj 1729 文艺平衡树 这题的话是一个Splay的裸题 并且只需要支持翻转操作 至于怎么找到区间,你就找到第l-1个,和第r+1个 把前者

OZY的博客 1087

【LDU】新生训练营杭电100题(三)

手机短号: 水题不解释了: 代码如下: #include&lt;bits/stdc++.h&gt; using namespace std; int main() { int T; scanf("%d",&amp;T); while(T--){ char str[1000]={0}; scanf("%s",str); ...

Z_sea的博客 1159

近期刷题总结[ 19 04 07 ]

目录 P2523 [HAOI2011]Problem c[ DP + 组合数学 ] [CQOI2014]数三角形[ 组合数学 ] P2606 [ZJOI2010]排列计数[ DP + 组合数学 ] P2962 [USACO09NOV]灯Lights[ 高斯消元 + dfs ] JSOI2012 始祖鸟[高斯消元] P2474 [SCOI2008]天平[差分约束] P328...

FSYo 的博客 529
上一篇: D. Dog Walking(枚举,贪心)
下一篇: Codeforces Round #651 (Div. 2)
枉玊
博客等级 码龄6年 73粉丝 171原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值