【ybt】【基算 深搜 课过 例3】虫食算

Android MediaCodec学习笔记 模块介绍 基本概念 OpenMAX是Khronos Group提出的标准,目标在于创造一个统一的接口,加速大量多媒体资料的处理。OpenMAX分成三层:应用层(Application Layer, AL), 整合层(Integration Layer, IL) 以及开发层(Development Layer, DL)。 OpenMAX (Open Media Acceleration) OpenMAX AL Application Layer .. 阅读详情

虫食算

题目链接:虫食算
感谢 @ l z h @lzh @lzh 大佬的帮助


题目描述

在这里插入图片描述
在这里插入图片描述

解题思路

很明显这是一道深搜题 (不然它怎么会归到深搜专栏里呢) 。

可以搜索枚举每一个字母来寻找最佳答案。

但这样是 O ( 1 0 n ) O(10^n) O(10n) 的时间复杂度,肯定是过不了的,所以要加入剪枝。

如果当前情况已经不合法了,自然不能搜下去。

那么现在关键在于 c h e c k ( ) check() check() 函数。

如果当前位三个数都被搜到过了,那么直接判断即可。但如果上一位有数未知,那么最多还可以对这一位贡献 1 1 1 。

最后一位要特判:无论是进位或者不等都是不合法的。

code

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
using namespace std;

int n,tot,ok;
int v[30];
int b[20];
int ans[30];
char ss[30];
string s[4];

int check()
{
	int t=0;
	for(int i=n-1;i>=0;i--)
	{
		int a=ans[s[1][i]-'A'];
		int b=ans[s[2][i]-'A'];
		int c=ans[s[3][i]-'A'];
		if(a!=-1&&b!=-1&&c!=-1)
		{
			if(t!=-1)
			{
				if((a+b+t)%n!=c)
					return 0;
				if(i==0&&a+b+t>=n)
					return 0;
				t=(a+b+t)/n;
			}
			else
			{
				if((a+b)%n!=c&&(a+b+1)%n!=c)
					return 0;
				if(i==0&&a+b>=n)
					return 0;
			}
		}
		else
			t=-1;
	}
	return 1;
}

void dfs(int dep)
{
	if(ok)
		return;
	if(dep>n)
	{
		ok=1;
		for(int i=0;i<n;i++)
			cout<<ans[i]<<" ";
		return;
	}
	for(int i=0;i<n;i++)
	{
		if(!b[i])
		{
			b[i]=1;
			ans[ss[dep]-'A']=i;
			if(check())
				dfs(dep+1);
			b[i]=0;
			ans[ss[dep]-'A']=-1;
		}
		
	}
}

int main()
{
	cin>>n;
	cin>>s[1]>>s[2]>>s[3];
	for(int i=n-1;i>=0;i--)
		for(int j=1;j<=3;j++)
			if(!v[s[j][i]-'A'])
			{
				v[s[j][i]-'A']=1;
				ss[++tot]=s[j][i];
			}
	memset(ans,-1,sizeof(ans));
	dfs(1);
}
SRAM vs RRAM:存算一体芯片选型指南(含最新技术对比) 本文深入对比了SRAM与RRAM在存算一体芯片设计中的核心差异,为硬件工程师和架构师提供实战选型指南。文章从技术本质、性能、功耗、成本及设计风险等多维度剖析,指出SRAM基于成熟CMOS工艺,适合高精度、低延迟场景;而RRAM凭借非易失性和高密度潜力,在超低功耗、固定模型应用中优势明显。决策需综合项目预算、上市时间及技术储备。 阅读详情

相关推荐

Keil5实战:如何高效导出变量数据并实现可视化分析

本文详细介绍了在Keil5开发环境中,如何利用调试脚本高效导出程序运行时变量数据的方法。通过编写脚本自动捕获数据并保存为文件,再结合Excel或Python进行可视化分析,为嵌入式调试与算法优化提供了数据支撑,显著提升开发效率。

silver的专栏 1104

DFS(6):P1092 虫食算——复杂逻辑与剪枝

输出格式 一行,即唯一的那组解。 解是这样表示的:输出NN个数字,分别表示A,B,C,…A,B,C,…所代表的数字,相邻的两个数字用一个空格隔开,不能有多余的空格。 输入输出样例 输入 #1复制 5 ABCED BDACE EBBAA 输出 #1复制 1 0 3 4 2 参考以下DFS代码,可以摸索出一个DFS模板 void dfs(.....){ if(符合返回要求){ .... r...

qq_35299223的博客 211

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 524

(UPC2.13)虫食算(深搜顺序变换+剪枝)

深搜,不仅要注意剪枝,还有在意深搜顺序,同时思维结构(思路)一定要清晰

蒲公英殇的博客 447

全网最全的AItium Designer 16下载资源与安装步骤

Altium Designer 除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员能将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。...

WQ的博客 1万+

空频、空时、空域、时域、频域抗干扰介绍

1、时域抗干扰:对时间域序列进行滤波,滤波系数h(n),采样序列不断进行输入与滤波系数卷积计算,得到响应输出;例如常用的FIR和IIR滤波器。 对于多窄带干扰噪声源和连续波干扰源有较好的处理效果,还可以解决多径问题; 可以通过在接收机前端处理中增加一个嵌入式块实现; 2、频域抗干扰:接收机不容易受到相对于接收机频带以外的强功率干扰; 通常为带通滤波和阻带滤波, 适用于窄带干扰噪声源,连续波干扰源以及较强的频带外干扰噪声源, 3、空域抗干扰:通过多个自适应天线按照特定组合成天线阵列,波束成形,针对

qq_43517907的博客 7305

【ybtoj】【DFS】【例题3】虫食算

【例题3】虫食算link解题思路Code link 传送门 题目 解题思路 40分:暴力搜索每个字母代表的数 考虑剪枝 (搜索字母的顺序按竖式的从右到左,方便剪枝) 每搜索一个字母时,其实已经可以判断竖式的可行性了 当竖式上当前位的右边都有时,(x+y)%n<>z(x+y)\%n<>z(x+y)%n<>z不可行(加数x,yx,yx,y,和zzz)。 但是还要考虑进位,设右边进位ttt,(x+y+t)%n<>z(x+y+t)\%n<>z(x+y

蒟蒻的OI路 471

Linux 内核中 ARP 协议的全链路解析:从触发机制到物理层发送

核心设计思想按需解析:减少不必要的 ARP 请求,降低网络负载。分层解耦:协议栈各层(邻居子系统、Netfilter、驱动)职责分离,提高扩展性。ARP的核心作用是将IP映射为MAC地址,确保数据链路层能正确封装帧。其触发时机围绕“未知MAC地址需求”展开,覆盖通信初始化、缓存更新、网络变更及维护等多种场景。

数字人生 367

[深搜]C. 【例题3】虫食算

C.【例题3】虫食算C. 【例题3】虫食算C.【例题3】虫食算 题目解析 正解 : Dfs + 剪枝 依题意,把样例以加法的形式展现出来. 根据加法的性质,可以得出有两种情况:有进位和没有进位的. 而从百位到最高位的结果,又可能是有从上一位进过一的. 因为三个字符串的长度都为nnn,所以最高位是没有进一的根据以上的结论,容易得出 A+B=E   ∣∣   A+B+1=EA+B=E ~~~||~~~A+B+1=EA+B=E &nb

SSL_LJH的博客 683

Nuxt - 项目打包部署及上线到服务器流程(SSR 服务端渲染)

Nuxt-项目打包部署及上线到服务器流程,详细介绍Nuxt项目上线部署,服务端渲染(ssr)项目及nuxt项目部署过程,nuxt项目打包上线,Nuxt项目的部署教程,NuxtJS项目部署方案,Nuxt如何部署到线上,nuxt项目部署篇,Nuxt项目搭建到Nuxt项目部署,Nuxt项目从开始到部署,详细教程。服务器部署nuxt项目,nuxt服务端部署上线,在服务器上部署nuxt项目,NuxtJS项目——命令和部署。......

🏆 前端领域优质创作者 1万+

【时时三省】vector cast (vcast) 集成测试使用教程

山不在高,有仙则名。水不在深,有龙则灵。----优快云 时时三省。

时时三省的博客 708

【YBT高效进阶】1基础算法/4深度优先搜索/3虫食算

【YBT高效进阶】1基础算法/4深度优先搜索/3虫食算 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 所谓虫食算,就是原先的算是中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定啃掉的字母。来看一个简单的例子: 43#9865#045 8468#6633 44445509678 其中 # 号表示被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是 5 和 3,第二行的数字是5 。 现在,我们对问题做两个限制: 首先,我们只考虑

weixin_46975572的博客 254

在 ABAP 平台上搭建 OAuth 2.0 Server:架构、流程、权限与落地实战

摘要:本文为SAP ABAP开发人员提供将ABAP平台配置为OAuth 2.0授权服务器的实战指南。重点介绍两种授权流程(授权码和SAML Bearer)的实现方案,包括核心事务配置(SOAUTH2/SAML2)、授权对象(S_SCOPE)管理以及端点交互规范。通过具体配置清单和三类典型集成场景(第三方Web应用访问OData、企业集成平台调用、BTP应用对接)的落地示例,帮助读者快速构建安全的OAuth 2.0服务架构。文档强调SSL/TLS基础安全、scope最小授权原则以及授权与令牌端点的标准交互模式

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 309

【ybtoj 高效进阶 1.4】【深搜】 虫食算

【ybtoj 高效进阶 1.4】【深搜】 虫食算 题目 解题思路 记录下字母的出现顺序(从右往左) 枚举每个字母可能的数字 a是加数一,b是加数二,c是和 当这三个数已经填数时 如果(a+b+w)%n!=c说明不可行 如果最高位还有进位也不可行 当右边还有数没填 如果(a+b)%n!=c且(a+b+1)%n!=c,说明不可行 如果最高位有进位不可行 代码 #include<iostream> #include<cstring> #include<cstdio> u

Y的博客 223

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【ybt】【基算 深搜 课过 例2】数独游戏

数独游戏 题目链接:数独游戏 题目描述 解题思路 这道题很明显是深搜。 用三个数组分别保存当前行、列、和格子已经用过的数字。 然后搜索即可。 code #include<iostream> #include<cstdio> #include<string> #include<cstring> using namespace std; string T; int ok; int a[10][10]; int h[10][10],l[10][10],g[4]

你...你不要过来啊!!! 189

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【ybt】【基算 深搜 课过 例1】拔河比赛

拔河比赛 题目链接:拔河比赛 题目描述 解题思路 这是一个很简单的深搜。 依题意得每组最多 n2\frac{n}{2}2n​ 个人。 对于每个人无非有选和不选两种情况。 累计选的总和,用全部人的总和去减就得出了另一对的重量。 取绝对值即可。 code #include<iostream> #include<cstdio> #include<cmath> using namespace std; int T; int n,ans,st; int a[30]; vo

你...你不要过来啊!!! 217

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【ybt】【基算 广搜 课过 例1】走迷宫

走迷宫 题目链接:走迷宫 题目描述 解题思路 广搜模板题。 可以用 scanf("scanf("scanf("%1d")1d")1d") 来一位一位输入。 code #include<iostream> #include<cstdio> using namespace std; const int xn[5]={0,0,0,1,-1}; const int yn[5]={0,1,-1,0,0}; int n,sx,sy,tx,ty; int xx[1000000]; int

你...你不要过来啊!!! 191

【ybt】【基算 递推 课过 例3】数的划分

数的划分 题目链接:数的划分 解题思路 设 fi,jf_{{i},{j}}fi,j​ 表示将 iii 分成 jjj 份的情况数。 显然,当 i=ji=ji=j 时 f(i)(j)f(i)(j)f(i)(j)

你...你不要过来啊!!! 187

【ybt】【基算 贪心 课过 例3】畜栏预定

畜栏预定 题目链接:畜栏预定 题目描述 解题思路 很明显,这是一个贪心。 先进行排序,然后逐个加入。 如果之前已经有畜栏结束使用了,直接加进去就可以了。 如果所有的畜栏都还没有结束使用,那么就新开一个畜栏即可。 code #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int n,tot,ans; int h[50010]; int s[50010]; s

你...你不要过来啊!!! 167

【ybt】【基算 二分 课过 例3】最大均值

最大均值 题目链接:最大均值 题目描述 解题思路 很明显是二分平均值。 这样就用掉了 O(log⁡n)O(\log {n})O(logn) 的时间复杂度,而一般的二分题是 O(nlog⁡n)O(n \log {n})O(nlogn) 的时间复杂度(也可能是我才疏学浅没有遇到过难一点的)。 现在问题就变成了:如何用 O(n)O(n)O(n) 的时间复杂度验证在平均值为 midmidmid 的情况下序列中是否存在一个长度大于 lll 的 ...

你...你不要过来啊!!! 209

【ybt】【基算 广搜 课过 例3】立体推箱子

立体推箱子 题目链接:立体推箱子 题目描述 解题思路 这道题很容易可以想到是广搜。 难点在于如何表示出躺下的情况。 但其实只需要记录两个点中的一个,然后用一个状态变量就可以表示出一整个箱子。 主要是状态的转移不太好推,要有耐心。 其他的和广搜模板就没什么区别了。 code #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int xn[4][5]={{}

你...你不要过来啊!!! 186

【ybt】【基算 贪心 课过 例2】雷达装置

雷达装置 题目链接:雷达装置 题目描述 解题思路 首先,对于每个点来说,在哪个区间里放置雷达可以检测到它是可以求出来的,用勾股定理即可。 然后考虑贪心:如果想要放雷达数量尽量少,那么肯定要在区间的交界处放,因为每个都要放到,所以我们尽量往右放。 我们先以右端点为关键字进行排序,因为这个贪心是建立在右端点单调的基础上的。然后如果当前右端点容不下后面的左端点了,就新开存档,ans++ans++ans++ 即可。 code #include<iostream> #include<cstdio

你...你不要过来啊!!! 228

【ybt】【基算 二分 课过 例1】数列分段

数列分段 题目链接:数列分段 题目描述 解题思路 这道题考虑二分答案。 用一个 check()check()check() 来检验这个答案是否可以满足。 即可。 code #include<iostream> #include<cstdio> #define int long long using namespace std; int n,m; int a[100010]; int t,ans=0x3f3f3f3f; int check(int f) { int h=1,s=

你...你不要过来啊!!! 195

【ybt】【基算 广搜 课过 例2】山峰和山谷

山峰和山谷 题目链接:山峰和山谷 题目描述 解题思路 广搜模板题。 注意是八连通。 只有低,则山峰 只有高,则山谷 如果周围有高有低,则非山峰也非山谷。 如果没高也没底,则即使山峰又是山谷。 code #include<iostream> #include<cstdio> using namespace std; const int xn[9]={0,0,1,0,-1,1,1,-1,-1}; const int yn[9]={0,1,0,-1,0,1,-1,1,-1}; i

你...你不要过来啊!!! 285

【ybt】【基算 贪心 课过 例4】国王游戏

国王游戏 题目链接:国王游戏 题目描述 解题思路 我们考虑交换相邻的两个人。 交换前交换前交换前 当前位置 aaa bbb 权值 iii aia_{i}ai​ bib_{i}bi​ a1∗...∗ai−1bi\frac{a_1*...*a_{i-1}}{b{i}}bia1​∗...∗ai−1​​ i+1i+1i+1 ai+1a_{i+1}ai+1​ bi+1b_{i+1}bi+1​ a1∗...∗ai−1∗aibi+1\frac{a_1*...*a_{i-1}*a_i}{b{i+1

你...你不要过来啊!!! 241

【ybt】【基算 广搜 课过 例5】电路维修

电路维修 题目链接:电路维修 题目描述 解题思路 这道题的难点无非在于改变格子后如何保存状态。 但其实根本没必要。 直接跑 spfaspfaspfa 就可以了。 只是判断路径麻烦了一点。 卡常难了一点而已。 code #include<iostream> #include<cstdio> #include<cstring> using namespace std; char pg[5]={' ','/','\\','\\','/'}; const int xg[5

你...你不要过来啊!!! 167
上一篇: 【ybt】【基算 深搜 课过 例2】数独游戏
下一篇: 【ybt】【基算 广搜 课过 例1】走迷宫
SSL_GYX
博客等级 码龄7年 103粉丝 297原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值