CDOJ 1085 基爷与加法等式 DFS

CDOJ 1147 秋实大哥带我飞 最短路径条数 dijkstra就可搞 啊,就是说给你一个图,让你求从1到n的最短路径条数,模1e9+7 图的边权可能为0或者正数,边和点都可以重复走 最短路径条数为无穷则输出-1 啊,那个边权全为正的情况好说,边和点也不可能重复走 就是如果边权为0的话,它可以沿着这个边无限次数的来回走,然后就是无穷了 嗯,看题解什么队列搞阿,网上搜了都是DFS,,后来感觉dijkstra就可以搞阿,,看到网上果然有一个这么搞的,代码太丑就没 阅读详情

就是给一个由字母组成的加法等式,问这个等式有多少种情况,相同字母代表相同数字,不同字母代表不同数字,不存在前导0.

呃,就是DFS搜索,但是刚开始我的姿势不对,就T了。

刚开始我是就枚举前面的所有情况,然后看得到的和能不能组成最后的和。然后,这个搜索姿势很智障地T了。。。

然后就去度娘了,,,发现要按每一位进行搜索,就是搜索所有的个位数,然后查看和的个位数是否能满足,再依次搜索十位,百位。。

这样,如果不合法,就可以很早地发现,算是一个很大的剪枝了。。

最后因为最后一个数字的长度太长和太短而错了几发,,就这样了。。


代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
char formu[12][12];
int idx[27];
int n, llen, maxlen;
bool nozero[27];
bool num[10];
int DFS(int x, int y, int carry)
{
	int ans = 0;
	if (x == n - 1)
	{
		int sum = 0;
		bool new_num = 0;
		for (int i = 0; i < n - 1; ++i)
			sum += idx[formu[i][y]];
		sum += carry;
		int last = sum % 10;
		if (idx[formu[x][y]] == -1)
		{
			if (num[last]||(last==0&&nozero[formu[x][y]]))
			{
				return 0;
			}
			new_num = 1;
			idx[formu[x][y]] = last;
			num[last] = 1;
		}
		else if (last != idx[formu[x][y]])
		{
			return 0;
		}
		if (y == llen - 1 && sum / 10 == 0)
		{
			ans = 1;
			if (new_num)
			{
				idx[formu[x][y]] = -1;
				num[last] = 0;
			}
		}
		else
		{
			ans = DFS(0, y + 1, sum / 10);
			if (new_num)
			{
				idx[formu[x][y]] = -1;
				num[last] = 0;
			}
		}
	}
	else if (idx[formu[x][y]] == -1)
	{
		int i = 0;
		if (nozero[formu[x][y]])
			i = 1;
		for (; i <= 9; ++i)
		{
			if (num[i])
				continue;
			idx[formu[x][y]] = i;
			num[i] = 1;
			ans += DFS(x + 1, y, carry);
			num[i] = 0;
		}
		idx[formu[x][y]] = -1;
	}
	else
		ans = DFS(x + 1, y, carry);
	return ans;
}
int main()
{
	//freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
	while (scanf("%d", &n) != EOF)
	{
		memset(num, 0, sizeof(bool) * 10);
		memset(formu, 0, sizeof(char) * 12 * 12);
		memset(idx, -1, sizeof(int) * 27);
		memset(nozero, 0, sizeof(bool) * 27);
		idx[0] = 0, maxlen = 0;
		int ans = 0;
		for (int i = 0; i < n; ++i)
		{
			scanf("%s", formu[i]);
			int len = strlen(formu[i]);
			if (len > maxlen)
				maxlen = len;
			for (int j = 0; j < (len + 1) / 2; ++j)
			{
				char tmp = formu[i][j] - 'A' + 1;
				formu[i][j] = formu[i][len - 1 - j] - 'A' + 1;
				formu[i][len - 1 - j] = tmp;
			}
			nozero[formu[i][len - 1]] = 1;
		}
		llen = strlen(formu[n - 1]);
		if (maxlen==llen)
			ans = DFS(0, 0, 0);
		printf("%d\n", ans);
	}
	//system("pause");
	//while (1);
	return 0;
}

高速PCB设计中串扰的成因、影响与实战控制策略 在高速数字电路与硬件系统设计中,信号完整性是确保系统稳定可靠的核心基础。其核心原理在于,当信号在传输线上传播时,会伴随产生电场与磁场,若相邻导线距离过近,便会通过电磁场耦合产生不期望的能量转移,即串扰。这一现象会直接导致信号波形畸变、时序偏移和噪声裕量降低,严重影响系统性能。从技术价值看,深入理解并有效控制串扰,是提升数据传输速率、保障系统稳定性和降低误码率的关键。其应用场景广泛覆盖了从高速SerDes链路、DDR内存接口到高精度模拟电路等几乎所有现代电子系统。本文聚焦于高速PCB设计中的串扰问题,系统剖析 阅读详情

相关推荐

MATLAB创建GUI面板实现二维码生成与识别

利用matlab设计gui界面实现二维码的生成与内容识别

infinitystardust的博客 3148

1-9九个数字不重复组成一个三位数加法算式,求出所有组合

此题咱没想出很巧妙的解法,直接根据编程来吧 using System; using System.Collections.Generic; using System.Text; namespace RemainerMaths { class Program { static void Main(string[]

3万+

Windows 10下三菱PLC控件安装报错Error Number:-119的终极解决方案(附详细步骤)

本文针对Windows 10系统安装三菱PLC控件时常见的Error Number:-119报错,提供了深度分析与终极解决方案。文章剖析了该错误源于oleaut32.dll文件版本冲突,并详细介绍了通过设置兼容性模式、手动注册DLL、直接安装MX Component以及高级系统修复等多种方法,帮助用户彻底解决此安装难题,顺利搭建PLC开发环境。

weixin_29289821的博客 332

1996:加法等式

题目描述 设a、b、c 均是0 到9 之间的数字,abc、bcc 是两个三位数,且有:abc+bcc=532。求 满足条件的所有a、b、c 的值。 输入格式  无。 输出  每行输出3个数,分别表示abc的值,用一个空格隔开。 样例输入 无 样例输出 无 #include int main() { int a,b,c,sum1

Kay 813

[原创]Step by step 实现自己的AI知识库问答(二)

对小白很友好的AI智能问答开发保姆级教程,适合初级开发者、学生阅读参考,无限制分享,欢迎转载。在这个章节中,我们使用了百度千帆作为知识库,通过简单的代码调用API实现了智能问答。

BaiRiYiSanJin的博客 1471

从零构建:用Simulink搭建固定翼无人机六自由度模型的避坑指南

本文详细介绍了使用Simulink从零构建固定翼无人机六自由度动力学模型的完整流程和避坑指南。重点解析了模型架构设计、气动力计算、参数配置、仿真求解器选择等关键环节的常见问题与解决方案,帮助开发者快速建立准确可靠的无人机控制系统仿真模型。

hhh00的博客 999

CDOJ1085 基爷与加法等式 爆搜DFS

题目链接:http://acm.uestc.edu.cn/#/problem/show/1085题意:题解:因为进位,从低位搜 代码:http://www.cnblogs.com/qscqesze/p/4489781.html#include <bits/stdc++.h> using namespace std; typedef long long ll; #define MS(a) memset

yxg_123的博客 331

SAM2与Docker的完美组合:5分钟搞定Linux环境下的图像分割部署

本文详细介绍了如何在Linux环境下通过Docker快速部署SAM2图像分割模型,解决安装过程中的常见问题。文章提供了从镜像选择、CUDA版本匹配到容器构建的全流程指南,特别针对GPU加速环境下的'cudnn_frontend: No execution plans support the graph'等报错提供了实用解决方案,帮助开发者在5分钟内完成高效部署。

fern8的博客 933

zoj1204-addtive eqations(加法算式)

ZOJ1204 addtive equations 加法算式 题解 TAG:DFS

Mr. WA's Blog 2021

37、半导体硅材料中的缺陷与吸杂技术解析

本文系统解析了半导体硅材料中的缺陷形成机制及其对电子器件性能的影响,重点探讨了生长和工艺诱导缺陷、表面与内部微缺陷的起源与特征。文章详细阐述了吸杂技术的原理、过程及在集成电路和太阳能电池制造中的应用,强调通过氧行为调控和热处理优化实现缺陷控制。同时介绍了吸杂效果的评估方法,并展望了未来新型吸杂技术的发展趋势,为提升半导体器件性能和制造良率提供理论支持和技术路径。

mongodb5scout的博客 162

使用静态库在嵌入式系统中进行开发

静态库是一种包含预编译对象代码的文件,它可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。静态库是包含预编译对象代码的文件,可以与应用程序链接在一起,并在编译时将库的代码复制到最终的可执行文件中。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。需要注意的是,由于嵌入式系统的资源限制,开发人员应该仔细选择需要包含在静态库中的功能,并避免引入不必要的依赖关系。的静态库文件,可以在嵌入式系统的应用程序中使用它了。

ZrElixir的博客 203

CDOJ 215 吴队长征婚 DFS+剪枝

吴队长征婚这件事因为请客而没有传出去(虽然他忘了请一个队吃饭),于是吴队长高兴地玩起了木棒。吴队长拿了一些长度相同的木(guang)棒(gun),随机的把它们截成了NN段,每一段最长50。现在他想把这些木棒还原成原来的状态,但是他忘记了原来的木棒有多少根,也忘记了每一根有多长。请帮助他设计一个程序,帮他计算之前木棒可能的最小长度。输入数据保证每一段木棒长度都大于0。 输入有多组数据,每组数据分为

一蓑烟雨任平生 6858

YOLO11后处理优化 | 引入DIoU-NMS替代传统NMS,解决高重叠目标误删,召回率大幅提升

YOLO11模型在密集目标场景下存在NMS后处理导致的漏检问题。本文提出采用DIoU-NMS替代传统NMS,通过引入中心点距离信息,有效区分重叠但不同的目标,提升召回率。文章详细分析了传统NMS的三大局限性,对比了Soft-NMS和DIoU-NMS的优劣,并给出在YOLO11中实现DIoU-NMS的完整代码方案。该方法特别适用于安防监控、自动驾驶等目标密集场景,能够在不显著增加计算量的情况下显著改善检测效果。

2601_95807009的博客 150

CDOJ 1168 凤神与狗(数论_概率)

D - 凤神与狗 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 凤神隐居山林,与猫狗为伴。起初,他拥有c只猫和d只狗。每天下午他随机从中选择一只出去游玩并且晚上归来。如果他带的是狗,则第二天早上狗的数量增加w只,否则,猫的数量增加w只。由于凤神特别钟爱狗,某些重要的日子

一蓑烟雨任平生 1516

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

CDOJ 1059 秋实大哥与小朋友(离散化)

本文部分代码及思路来源于:http://www.cnblogs.com/Xiper/p/4470202.html 秋实大哥与小朋友 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 秋实大哥以周济天下,锄强扶弱为己任,他常对天长叹:安得广厦千万间,大庇天下寒士

一蓑烟雨任平生 1076

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CDOJ 1088 王之迷宫 BFS

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 王被困在了一个3维的迷宫中,他很想逃离这个迷宫回去当学霸,你能帮助他么? 由于王很仁慈,他悄悄地告诉你,本题读入迷宫的每一行时,要用scanf("%s"...) ...... Input 多组测试数据,对于每组测试数据

一蓑烟雨任平生 970

怀旧版电脑GBC模拟器

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

CDOJ 1074 秋实大哥搞算数(栈_表达式求值)

秋实大哥搞算数 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 秋实大哥大学物理挂科了,于是在下学期的前两周的某一天要悲剧的补考。为了不给学校的挖掘机大楼做贡献,秋实大哥决定在假期里努力复习。当然,良好的计算能力也是非常必要的,毕竟是涉及计算自己做多少分的题能够通过考试的

一蓑烟雨任平生 853

CDOJ_1063 秋实大哥与妹纸(堆结构)

秋实大哥与妹纸 致中和,天地位焉,万物育焉。秋实大哥是一个追求中庸的人。 虽然秋实大哥的仰慕者众多,但秋实大哥不喜欢极端的妹纸。所以他想从所有仰慕自己的妹纸中挑选出一个符合中庸之道的。 每一个妹纸对秋实大哥的仰慕程度可以用一个整数ai来表示,秋实大哥想要找出这些数的中位数。 计算有限个数的数据的中位数的方法是 把所有的同类数据按照大小的顺序

一蓑烟雨任平生 811

2016 UESTC Training for Data Structures O - 卿学姐种美丽的花 CDOJ 1344 线段树/树状数组

O - 卿学姐种美丽的花 给一个区间,等差数列更新,单点查询 我们可以开一个线段树记录这个点被更新的次数,然后因为是区间更新,所以我们需要一个lazy,lazy表示这个区间的被更新的数列的首项是多少,还有一个cnt,表示公差,因为两个数列加和到一起时,公差也会相加,所以就是这样了,然后lazy下放的时候,也是计算下两个子区间的首端点的位置是多少,相当于把这个数列分为两个子数列 然后我们就

一蓑烟雨任平生 794

CDOJ 1092 韩爷的梦 字符串哈希

就是字符串哈希求个数,因为内存限制很小,所以只能把所有的哈希值存下来,然后排序,去重,就可以 不知为什么,我的p选的是1e9+7,mod是1e9+9,就会WA,然后两个换一下。p是1e9+9,mod是1e9+7,就过了,2333 原来字符串哈希也不难。。。。去年的时候,,,还是十分懵逼的小白。。。。什么都看不懂。。。 代码: #include #include #include #i

一蓑烟雨任平生 790

2016 UESTC Training for Data Structures B - 卿学姐与基本法 CDOJ 1325 线段树+离散化

B题:卿学姐与基本法 题意:给一段区间,长度为1e8,Q次操作(Q), 操作有两种,一种是将某个区间进行染色,另一种是查询某个区间未被染色的长度   离散化+线段树求区间染色 呃,离散化很简单咯,我的做法就是sort+unique+lower_bound搞定,聊天中柱爷突然说了一句,其实unique可以没有,想了想,真的诶,如果不要求编号必须连续的话,是可以没有unique的,但是习惯有

一蓑烟雨任平生 762

CDOJ 763 树上的鸟儿(水题/模拟题)

树上的鸟儿 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 作为电子科大的一员,大家都知道,我们校园有很多高大的银杏树,现在小明正在观察一棵树上的鸟儿,他发现了一些规律。 在这个树上,有一些雄鸟和雌鸟(小明很厉害,能分得出鸟儿的雄雌),假如来了一只雄鸟,它会

一蓑烟雨任平生 760

2016 UESTC Training for Data Structures E - 卿学姐与城堡的墙 CDOJ 1341 树状数组 逆序对 离散化

E题:卿学姐与城堡的墙 有N条直线,以y=kx+b的形式给出,问有多少种方式任取两个直线,使这两个直线的交点在x=u和x=v之间 对于两个直线a和b,怎么判断他们的交点在x=u和x=v之间呢 假如直线a在x=u时的纵坐标为yau,在x=v时的纵坐标为yav,直线b在x=u时的纵坐标为ybu,在x=v时的纵坐标为ybv。假设yau在ybu的下面,但是yav却在ybv的上面,那中间就是一定有交点

一蓑烟雨任平生 735

2016 UESTC Training for Data Structures Q - 昊昊爱运动 II CDOJ 1259 线段树+bitset

Q - 昊昊爱运动 II 题意,区间长度N,N为1e5,运动种数为M,M Q次操作,Q,每次可以把一个区间的运动都换成x,或者查询一个区间的运动种数   在放宽了时限和内存之后,bitset就直接搞过去了   之前因为卡的太紧,我就用两个long long模拟的bitset,另外线段树也没有存左右端点,是在更新和查询的过程中用形参来保存的   具体做法就是每个节点存一个bits

一蓑烟雨任平生 732

2016 UESTC Training for Data Structures L - 郭大侠与苦恼 CDOJ 1284 map+启发式合并

L - 郭大侠与苦恼 题目简单,就是给你一棵树,然后问异或值为0的简单路径有多少条 好难,好麻烦,想了好久才想明白 按dfs的顺序来map+启发式合并, 后来想找个题的大概框架和树形01背包相似,都是用dfs来实现的,只不过树形01背包dfs后的过程是背包的合并,这个是map的合并,还是启发式合并(就是把size小的合并到size大的上), 然后我们这里维护的是pre[u],就是从根

一蓑烟雨任平生 716

2016 UESTC Training for Data Structures A - 卿学姐与公主 CDOJ 1324 线段树

A题 题意:有一个数列,长度为10^5,初始全为0 要求支持两种操作:单点更新和区间查询最大值 操作次数10^5, 另:答案可能会爆int,所以用long long存   唔,线段树裸题,存的是最大值,所以更新时的push_up是: tr[id].mx=max(tr[lid].mx,tr[rid].mx); 然后就可以了,   坑点就是爆int,咦,对,还有就是更新的时候是加上

一蓑烟雨任平生 714
上一篇: 八数码 八境界
下一篇: CDOJ 1131 男神的礼物 石子合并
sky-edge
博客等级 码龄12年 20粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值