E-智乃的凑数题

news/2025/4/1 2:27:48/文章来源:https://www.cnblogs.com/benscode/p/18799406

题目链接:https://ac.nowcoder.com/acm/contest/103957/E

题意:

给定一个数组,分别选出一些数使得其乘积之和是否等于x

思路:

将ai x bi 求和拆分成 ai之和 x bi之和
发现如果要让x等于这个两个数的乘积,那么这两个数分别是x的因子
将选取数看成01背包
记dp数组:dp[i,j]=1表示能到达这个状态,i表示行之和,j表示列之和
dp[i,j]=dp[i-a[k][j]
dp[i,j]=dp[i][j-a[k]]
如果dp[i,j]已经存在,那么就必须要continue

状态转移
对于单个方案的方法使用回溯,用分别记录pre分别记录走x还是走y

int arr[105];
int x,n;
int ok;void solve(){int m;cin>>n>>m;for(int i=1;i<=n;i++)cin>>arr[i];vector<vector<int>>dp(200,vector<int>(200,0));vector<vector<int>>pre(200,vector<int>(200,0));dp[0][0]=1;for(int i=1;i<=n;i++){for(int x=100;x>=0;x--){for(int y=100;y>=0;y--){if(dp[x][y])continue;if(x-arr[i]>=0&&dp[x-arr[i]][y]){dp[x][y]|=dp[x-arr[i]][y];pre[x][y]=arr[i];}else{if(y-arr[i]>=0&&dp[x][y-arr[i]]){dp[x][y]|=dp[x][y-arr[i]];pre[x][y]=-arr[i];}}}}}rep(i,1,m){cin>>x;int ok=0;for(int j=1;j*j<=x;j++){if(x%j==0){vector<int>res1,res2;int a=j,b=x/j;while((a!=0||b!=0)&&dp[a][b]){ok=1;	if(pre[a][b]>0){res1.pb(pre[a][b]);a-=pre[a][b];}else{res2.pb(-pre[a][b]);b+=pre[a][b];}}if(ok){cout<<"Yes"<<endl;cout<<res1.size()<<' '<<res2.size()<<endl;for(int k=0;k<res1.size();k++){cout<<res1[k]<<' ';}cout<<endl;for(int k=0;k<res2.size();k++){cout<<res2[k]<<' ';}cout<<endl;break;}}}if(!ok)cout<<"No"<<endl;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/907584.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

US104S-ASEMI电机驱动专用US104S

US104S-ASEMI电机驱动专用US104S编辑:LL US104S-ASEMI电机驱动专用US104S 型号:US104S 品牌:ASEMI 封装:TO-220F 栅极触发电压(Vgt):1.3V。 栅极触发电流(Igt):0.2mA。 保持电流最大值(Ih):30mA。 正向重复电压(Vdrm):800V。 反向重复电压(Vrrm):800V。 通态…

deepseek+dify工作流实现代码审计

一、登录dify,设置deepseek apikey登录dify(https://cloud.dify.ai/signin)设置deepseek apikey二、创建dify工作流添加工作流应用写工作流三、添加待检测源代码,审计源代码安全问题修改待检测源代码项目的文件名后缀点击运行添加文件列表到工作流中四、与传统检测方式对比…

macbook安装Redis

1.下载Redis: https://redis.io/downloads/ ,进入网站拉到最低下就能看到可以下载的版本。 2.下载后解压缩,进入文件输入命令:sudo make test 执行完后出下面的图,就可以证明安装环境没有问题: 3.然后执行命令:sudo make install, 下图是安装成功 安装成功后:启动redi…

开源免费真香!Star 1.4k 这款开源在线教育系统让万人学习零压力,企业培训系统一键搭建神器

PlayEdu 是一款基于 SpringBoot3 + Vue3 开发的开源企业培训系统,提供从课程管理、学员管理到考试测评嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法PlayEdu 是一款基于 SpringBoot3 + Vue3 开发的开源企业培训系统,提供从课程管…

【VMware Workstation】虚拟机如何与宿主机共享文件夹

本文主要介绍VMware Workstation的虚拟机和宿主机之间如何共享文件第1步,打开VMware Workstation,并找到虚拟机的设置第2步,在虚拟机设置的选项卡中,点击 共享文件夹 ,并参考如下设置第3步,在弹出的共享文件夹向导窗口中,点击下一步第4步,选择宿主机共享给虚拟机的文件…

征程 6E mipi tx 系列之方案介绍

MIPI TX 到车机显示系统设计指南 IDE 介绍 征程 6 IDE 架构图 IDE(Image Display Engine)包含图像显示单元(Image Display Unit)、图像数据输出模块(MIPI CSI2 Device 和 MIPI DSI)。通过 IDU 从内存中读取图像数据进行处理,在 IDE 内部支持像素格式转换和像素结构转换,…

文件夹实时同步软件,怎么实时同步备份文件夹呢?

文件夹实时同步软件是一种非常实用的工具,可以帮助用户在不同设备或存储位置之间实时同步文件夹内容,确保数据的一致性和安全性。以下是一些常用的文件夹实时同步软件及其使用方法:常用文件夹实时同步软件 80KM备份软件 简介:可以进行很复杂的备份方式,也可以内网对内网备…

UE5--005--Animation

1. BP_ThirdPersonGameMode2. Project Settings3. Project Settings

第三课 运算符

1.算数运算符 除法运算:整数相除,结果依然是整数,将小数部分舍弃;实数相除,结果依然是实数 取余运算:两个小数是不可以做取余运算的 前置和后置的区别:前置:先对变量操作,然后进行表达式运算 后置:先进行表达式运算,后对变量进行操作2.赋值运算符3.比较运算符cout &…

使用AOP技术实现Java通用接口验签工具

一、背景 在给第三方提供接口时,我们需要对接口进行验签。具体来说,当外部系统调用我们的接口时,请求中需要携带一个签名,我们接收到请求后,会解析数据并校验签名是否正确,以确保请求的合法性和安全性。为了在不同项目中方便地使用这一功能,我们将签名校验规则封装成一个…

TS学习-2

常用类型和语法 1.any 任意类型,⼀旦将变量类型限制为any,意味着放弃了对该变量的类型检查。 let a:any //以下赋值无警告 a=100 a=你好 a=false//隐式any let b注意:any类型的变量,可以赋值给任意类型的变量 let c:any c=9let x:string x=c //没有报错2.unknown 未知类型,…

使用AOP技术实现接口验签

一、背景 在给第三方提供接口时,我们需要对接口进行验签。具体来说,当外部系统调用我们的接口时,请求中需要携带一个签名,我们接收到请求后,会解析数据并校验签名是否正确,以确保请求的合法性和安全性。为了在不同项目中方便地使用这一功能,我们将签名校验规则封装成一个…