[NOIP2004]虫食算【搜索】

ERNIE-Image-Turbo与OpenMementos:多模态生成工业化落地双引擎 多模态生成已从实验室benchmark走向产线级稳定交付,其核心挑战在于平衡生成速度、语义可控性与真实场景适配性。ERNIE-Image-Turbo通过编码器-解码器+轻量扩散混合架构,在A10单卡实现1.2秒内首帧输出与8.7张/秒吞吐,显著突破显存墙与延迟瓶颈;OpenMementos则以120万张手机直拍‘记忆片段’及7维结构化元数据,为模型提供真实世界校准信号,将prompt工程从经验驱动转向可量化评估。二者协同,使电商图生图、教育素材生成、家居设计等垂直场景首次具备低延迟、高可控、强泛化的一站式生 阅读详情

【问题描述】

    所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子:

      43#9865#045
    +    8468#6633
      44445506978

    
其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。

    现在,我们对问题做两个限制:

    首先,我们只考虑加法的虫食算。这里的加法是N进制加法,算式中三个数都有N位,允许有前导的0。

    其次,虫子把所有的数都啃光了,我们只知道哪些数字是相同的,我们将相同的数字用相同的字母表示,不同的数字用不同的字母表示。如果这个算式是N进制的,我们就取英文字母表午的前N个大写字母来表示这个算式中的0到N-1这N个不同的数字:但是这N个字母并不一定顺序地代表0到N-1)。输入数据保证N个字母分别至少出现一次。



            BADC
      +    CRDA
            DCCC

    
上面的算式是一个4进制的算式。很显然,我们只要让ABCD分别代表0123,便可以让这个式子成立了。你的任务是,对于给定的N进制加法算式,求出N个不同的字母分别代表的数字,使得该加法算式成立。输入数据保证有且仅有一组解,

【输入文件】

    输入文件alpha.in包含4行。第一行有一个正整数N(N<=26),后面的3行每行有一个由大写字母组成的字符串,分别代表两个加数以及和。这3个字符串左右两端都没有空格,从高位到低位,并且恰好有N位。

【输出文件】

    输出文件alpha.out包含一行。在这一行中,应当包含唯一的那组解。解是这样表示的:输出N个数字,分别表示A,B,C……所代表的数字,相邻的两个数字用一个空格隔开,不能有多余的空格。

解题思路:搜索的方法还是很明显的。。主要问题在搜索顺序和剪枝上了。由于是加法有进位,所以从低位向高位搜。剪枝有以下几点:1.若一列的两个数已知,但是第三个数与这两个数推出的结果矛盾;2.每搜出一个字母都向更高位搜索,如果出现像1一样的矛盾就剪枝。。还有一些想不起了。。另外对于每一个字母从大往小搜会比从小往下搜快,,,【noip数据的特点?】

 

代码(死活有一个点过不去):

#include
#include
#include
#include
#include
using namespace std;
intn,a[30],b[30],c[30],u[30]={0},un[30]={0},f[30],q[30],i,sum,j;
string s1,s2,s3;
int pan()
{int d=0,i;
for (i=n;i>=1;i--)
{if (u[a[i]]==0||u[b[i]]==0) return 0;
if(u[a[i]]==0&&u[b[i]]==1&&u[c[i]]==1&&un[f[c[i]]-f[b[i]]]==1&&un[f[c[i]]+n-f[b[i]]]==1)return -1;
if(u[a[i]]==0&&u[b[i]]==1&&u[c[i]]==1&&un[f[c[i]]-f[b[i]]]==0)f[a[i]]=f[c[i]]-f[b[i]];
if(u[a[i]]==0&&u[b[i]]==1&&u[c[i]]==1&&un[f[c[i]]-f[b[i]]+n]==0)f[a[i]]=f[c[i]]-f[b[i]]+n;
if(u[a[i]]==1&&u[b[i]]==0&&u[c[i]]==1&&un[f[c[i]]-f[a[i]]]==1&&un[f[c[i]]+n-f[a[i]]]==1)return -1;
if(u[a[i]]==1&&u[b[i]]==0&&u[c[i]]==1&&un[f[c[i]]-f[a[i]]]==0)f[a[i]]=f[c[i]]-f[a[i]];
if(u[a[i]]==1&&u[b[i]]==0&&u[c[i]]==1&&un[f[c[i]]-f[a[i]]+n]==0)f[a[i]]=f[c[i]]-f[a[i]]+n;
d+=f[a[i]]+f[b[i]];
if(u[a[i]]==1&&u[b[i]]==1&&u[c[i]]==0&&un[d%n]==1)return -1;
if(u[a[i]]==1&&u[b[i]]==1&&u[c[i]]==0&&un[d%n]==0){d=d/n;continue;}
if (d%n!=f[c[i]]) return -1;
d=d/n;
}
return 1;
}
void dfs(int k)
{int i,p;
p=pan();
if (p==-1) return;
if (p==1)
{for (i=1;i<=n-1;i++) printf("%d ",f[i]);
printf("%d\n",f[n]);exit(0);
}
for (i=n-1;i>=0;i--)
 if (un[i]==0) {
  f[q[k]]=i;
  u[q[k]]=1;
  un[i]=1;
  dfs(k+1);
  u[q[k]]=0;
  f[q[k]]=0;
  un[i]=0;
 }
}
int main()
{scanf("%d",&n);
cin>>s1;
cin>>s2;
cin>>s3;
sum=0;
for (i=1;i<=n;i++)
{a[i]=(int)s1[i-1]-64;
b[i]=(int)s2[i-1]-64;
c[i]=(int)s3[i-1]-64;
}
for (i=n;i>=1;i--)
{if (u[a[i]]==0) {sum++;u[a[i]]=1;q[sum]=a[i];}
if (u[b[i]]==0) {sum++;u[b[i]]=1;q[sum]=b[i];}
if (u[c[i]]==0) {sum++;u[c[i]]=1;q[sum]=c[i];}
}
memset(u,0,sizeof(u));//printf("*");
dfs(1);
}


NOIP2004 虫食算 题解 NOIP2004 虫食算 阅读详情

相关推荐

NOIP2004虫食算---C2021bjw

首先看一下题目: 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#98650#45 +   8468#6633 ---------------------------------     44445506978 其中#号代表被虫子啃掉的数字。 根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。 现在,...

weixin_43724076的博客 272

「NOIP2004」虫食算

所以我们只需判断如果有一位k,加数(加数1的第k位 + 加数二的第k位) mod n 与加数(加数1的第k位 + 加数二的第k位 + 1) mod n 都不等于和的第k位,那么这样的情况是不合法的,只需剪掉这样的情况即可。,现将字符转化成数字保存下来,再用一个数组存储,以方便深搜,与处理好后开始深搜,按照字母个数深搜,在中间设一个剪枝,减去不合适的,让后枚举字符,判断是否出现过,如果没出现过便向下搜,直到搜到有答案,并且答案正确为止。这里的加法是N进制加法,算式中三个数都有N位,允许有前导的0。

qwertyuiop202320的博客 251

【DAB收音机】DAB 认证介绍

DAB 认证ESTI 标准文档: ETSI 103461实际过认证时,需要根据产品的受众国家及区域,参考当地官方是否有国内认证协议。需要参考当地文档进行功能开发。例如:阿联酋地区用《UAE.S 5021 _ 2018.pdf》标准进行认证。ESTI 的DAB认证协议规定了家用和车载数字无线电的最低要求,及其对应的测试方法,是数字无线电认证标志规定的技术基础。本文以车载数字无线电接收器为例,进行部分DAB认证的介绍,详情请见官方文档。或联系博主获取DAB ESTI 103461的中文翻译资料。

qq_15271231的博客 1219

NOIP2004 虫食算

题面https://www.luogu.org/problemnew/show/P1092 肯定要从右到左,从上到下比较好处理。 必然记录一个数用过与否,某个字母是什么。 剪枝: 1.到了第三行,上面两个已经确定,可以判断。 2.往后预估。但是进位怎么考虑?? 没有关系!进位最多一位!! 如果对于已经填好2个的3元组,可以推出另外一个的2种可能情况,如果都被占据,return fal...

weixin_33834679的博客 176

EPICS电机支持(asynMotor)

EPICS电机支持(asynMotor)

yuyuyuliang00的博客 916

NWD 格式转换 STL 全流程:专业方案与迪威模型网在线转换详解

在3D模型处理中,将NWD文件转换为STL格式是常见的需求,特别是在3D打印和计算机辅助制造等领域。NWD文件由Autodesk开发,主要用于建筑、工程和施工行业,包含丰富的几何图形和材质信息,但因其专有格式和大文件大小,限制了其应用范围。相比之下,STL格式广泛应用于3D打印,仅包含表面几何信息。转换NWD到STL的原因包括拓展模型应用场景和便于模型编辑。转换方法包括使用专业软件如Autodesk Navisworks配合Blender或3ds Max,或使用专门的转换工具如CADExchanger。

技术说明博主 2540

【NOIP2004】虫食算

Description 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#9865#045 +. 8468#6633 44445509678 其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。 现在,我们对问题做两个限制:首先,我们只考虑加法的虫食算。这里的加法是N进制加法,...

weixin_30455365的博客 326

PCout(n) -- STM32F103RCT6 位带操作

位带操作,sys.h,PCout,PAout,PAout

weixin_50212044的博客 4021

相关系数假设检验:从计算到统计推断的完整指南

在数据分析中,计算两个变量间的相关系数(如皮尔逊相关系数)是描述其线性关系强度和方向的基础步骤。然而,仅凭样本计算出的相关系数可能受到抽样误差的影响,无法直接推断总体是否存在真实关联。统计推断中的假设检验为此提供了严谨的框架,其核心逻辑是通过反证法,在原假设(如总体相关系数为零)成立的前提下,计算得到当前样本相关系数或更极端情况的概率(即p值)。该技术价值在于将数据分析从单纯的描述提升到统计推断层面,帮助研究者量化结论的可靠性,避免将偶然的样本现象误判为普遍规律。其应用场景广泛,涵盖学术研究、商业决策与数学

weixin_34214500的博客 431

HMC7044芯片模拟SPI配置

摘要: HMC7044是一款高性能双环路整数N分频抖动衰减器,支持SPI接口配置,适用于高速数据转换器时钟系统。该芯片采用双PLL级联架构,具有14路可配置输出,可满足GSM/LTE基站设计需求。SPI接口采用3线模式(SLEN/SCLK/SDATA),支持24位寄存器读写(13位地址+8位数据)。驱动实现基于Zynq EMIO模拟SPI,提供初始化、数据传输及寄存器配置功能,支持三线制工作模式和多种时钟参数设置。

toonyhe的博客 1095

STM32实战:ADXL345传感器驱动与数据采集全解析(IIC/SPI双模式适配)

本文详细解析了STM32驱动ADXL345传感器的全流程,包括IIC和SPI双模式适配、硬件连接、寄存器配置及数据采集处理。通过实战代码示例和常见问题排查指南,帮助开发者快速实现高精度加速度数据采集,适用于运动检测、姿态识别等多种嵌入式应用场景。

weixin_29171087的博客 313

【搜索】[NOIP2004]虫食算

题目 从各位开始按照字母出现的顺序枚举每个字母代表的值; 剪枝:1.搜索时每个数值只能由一个字母代表 2.搜索中如果发现有矛盾就回溯#include<cstdio> #define MAXN 26 #include<cstdlib> #include<cstring> int a[MAXN+10],n,e[MAXN+10]; char x[MAXN+10],y[MAXN+10]

LiuJunhao's Blog 1511

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

Keras中神经网络可视化模块keras.utils.visualize_util安装配置方法

jacke121的专栏 2759

[NOIP2004]虫食算 - 高斯消元|搜索

1284: [NOIP2004]虫食算 时间限制: 1 Sec 内存限制: 64 MB 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子:     43#9865#045 +     8468#6633 ———————————      44445506978 其中#号代表被虫子啃掉的数

yuanxinyu402的博客 501

PyQt 随笔:信号与槽的两种使用方法:@pyqtSlot 和 connect

在 PyQt 中,信号与槽是实现事件驱动的一种重要机制。通过信号与槽的连接,可以实现对象之间的通信,例如在用户界面中响应按钮点击事件或者数据的变化等。PyQt 提供了两种主要的方法来创建信号与槽的连接:@pyqtSlot 装饰器和 connect 方法。本文将详细介绍这两种方法,并提供相应的源代码示例。在上面的示例中,我们定义了一个名为。

QasdCpp的博客 763

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

【NOIP2004】虫食算 搜索+剪枝

题目描述 Description所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子:43#9865#045 + 8468#6633 44445506978其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。现在,我们对问题做两个限制:首先,我们只考虑加法的虫食算。这里的加法是

DQS的树洞 1202

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[NOIP2004][CODEVS1064]虫食算(搜索||高斯消元)

要想让自己无可替代,你必须总是与众不同。

zyf2000 1021

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

假人有限元模型

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

Noip提高组 2004 T4 虫食算 搜索优化

题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: http://paste.ubuntu.com/25448822/ 其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。 现在,我们对问题做两个限制: 首先,我们只考虑加法的虫食算。这里的加法是N进制加法,算式中三

I'm Growing 473

【搜索】【NOIP2004提高组】四、虫食算

四、虫食算(alpha.pas/dpr/c/cpp)【问题描述】所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#9865#045+8468#6633 44445506978其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二...

diying4157的博客 510

【搜索】【NOIP2004】虫食算

[NOIP2004]虫食算 时间限制: 1 Sec 内存限制: 64 MB题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子:     43#9865#045 +     8468#6633 ———————————      44445506978 其中#号代表被虫子啃掉的数字。根据算式,我

SunIsMe的博客 434

[NOIP2004]虫食算 T4 简单搜索+剪枝

最近在刷搜索套餐 我先做了一道简单的 虫食算。。。。 我GO die了。。。。。。。。。。。 这都是啥啊!!!!!!!!!!!!!!!总之就是一个搜啊。。。。 从最右面开始搜 每一行行尾进行check 基本上能过9个点。。。。。。。。剪枝的话 ,考虑检索前面的每一行 如果改行的数字都己经试过,那么就可以判断合法性,如果已经有两个试过的话,考虑第三个数是否可能(可能已经被用过) 注意

独立团团长李云龙 1453

【暴力搜索】[NOIP 2004]虫食算

首先把每一个式子上的字母按照从右到左,从上到下的顺序存储下来,依次枚举每一个字母分别代表哪一个数字,然后每一次check一下当前的方案是否可行,只用考虑当前一列三个数字都知道了的情况,然后就是这样还有一个优化关键就是枚举数字的时候倒着枚举,具体原因我也不知道,反正就是要快一些。。。#include <cstdio> #include <cstring> #include <vector> #incl

JeremyGJY的专栏 1476

洛谷 P1092 虫食算

P1092 虫食算 题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母。来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中#号代表被虫子啃掉的数字。根据算式,我们很容易判断:第一行的两个数字分别是5和3,第二行的数字是5。 现在,我们对问题做两个限制: 首先,我...

HJ921004的博客 165
上一篇: [NOIP2004]合唱队形【动态规划】
下一篇: [NOIP2006]能量项链【动态规划】
Tag_king
博客等级 码龄12年 15粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值