P10960 SUBSTRACT 个人题解

news/2025/10/11 19:46:08/文章来源:https://www.cnblogs.com/bdxzay10180615/p/19135853

题目传送门

题目大意:

给定一个数组 \(a\) ,可以选择一个下标 \(i\) ,使 \(a[i]=a[i]-a[i+1]\) 并删去 \(a[i+1]\) ,使得数组最后剩下的数为 \(t\) ,输出每次操作的 \(i\)

解题方法:

我们把题目给出的这种操作命名为减操作,可以发现对于最终答案 \(t\) ,我们可以转化成这样 \(t=a[1]−a[2]±a[3]±······±a[n]\) 的形式。可以发现 \(a[1]\) 必须是 \(+\) 号, \(a[2]\) 必须是 \(-\) 号,首先我们来看 \(a[1]\) 必须是 \(+\) 号:因为减操作是前面一个数减去后面一个数,而 \(a[1]\) 前面没有数,所以他一定不会被减去,即一定是 \(+\) 号,因此最后一次减操作一定是对 \(i=1\) 进行的;而 \(a[2]\) 必须是 \(-\) 号是因为最后一次减操作一定是对 \(i=1\) 进行的,那 \(a[2]\) 一定是最后被减去的,所以一定是 \(-\) 号。

举一个 \(n=5\) 的例子(即样例):
原数组: \(a[1]~~a[2]~~a[3]~~a[4]~~a[5]\)
\(i=2\) 进行减操作: \(a[1]~~a[2]-a[3]~~a[4]~~a[5]\)
\(i=3\) 进行减操作:\(a[1]~~a[2]−a[3]~~a[4]−a[5]\)
\(i=2\) 进行减操作:\(a[1]~~a[2]−a[3]-(a[4]−a[5])\)
\(i=1\) 进行减操作:\(a[1]-(a[2]−a[3]-(a[4]−a[5]))\)
则处理完的数组为:\(a[1]−a[2]+a[3]+a[4]−a[5]\)

那么题目就被我们转换成给定一个数组,把数组中几个数变成其相反数,使最后加和成为 \(t\),那么就可以做了,我们用 \(f[i][j]\) 表示前 \(i\) 个数和为 \(j\) 时第 \(i\) 个数的符号( \(1\)\(-1\)),由于 C++ 的负号好像挂了,我们给每个数加上 \(10000\) ,保证下标为正数。

那么怎么反推出每一次的减操作呢?其实我也不会(),但是根据其他大佬的题解以及个人理解,我们可以发现除了 \(a[1]\)\(a[2]\) 以外
对于一个数,前面不是正号,就是负号,即\(\begin{cases}a[i]−a[i+1]\\a[i−1]−a[i]\end{cases}\)
说明只有当第 \(i-1\) 位进行减操作的时候,这个第 \(i\) 位才可以是负号,同理当第 \(i\) 位进行减操作的时候,这个第 \(i\) 位才可以是正号,那么我们可以每次找到正号的位置输出,不过记得要减去 \(cnt-1\)\(cnt\) 代表进行了几次减操作)。

注意到 \(1\le n \le100,1\le|T|\le10^4\),所以时间复杂度为 \(O(n|T|)\) ,在 \(10^6\) 级别内可以通过。

本题代码:

#include<bits/stdc++.h>
using namespace std;
const int N=105,M=10005,MAXN=20086;
inline int read(){int x=0,f=1;char c=getchar();while(c<'0' || c>'9'){if(c=='-')f=-1;c=getchar();}while(c>='0' && c<='9'){x=x*10+c-'0';c=getchar();}return x*f;
}//快读 
int low=10000;//给每个数加上low以保证下标为正数 
int n=read(),t=read(),f[N][MAXN],a[N],ans[N],s,cnt;
int main(){for(int i=1;i<=n;i++)a[i]=read();f[1][a[1]+low]=1;//a[1]只能为正 f[2][a[1]-a[2]+low]=-1;//a[2]只能为负 for(int i=3;i<=n;i++){for(int j=-10000+low;j<=10000+low;j++){if(f[i-1][j]){f[i][j-a[i]]=-1;f[i][j+a[i]]=1;}}}s=t+low;for(int i=n;i>=2;i--){//回溯减操作过程 ans[i]=f[i][s];if(ans[i]==1)s-=a[i];else if(ans[i]==-1)s+=a[i];}for(int i=2;i<=n;i++){//寻找正号位置输出 if(ans[i]==1){printf("%d\n",i-cnt-1);cnt++;	//减操作数+1 }}for(int i=2;i<=n;i++)//把负号输出 if(ans[i]==-1)puts("1");return 0;
}

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

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

相关文章

2025新型千斤顶厂家推荐:柳州市联桥科技,品质卓越服务到位

2025新型千斤顶厂家推荐:柳州市联桥科技,品质卓越服务到位随着工业技术的不断进步,千斤顶作为重要的起重工具,在各个行业中的应用越来越广泛。然而,当前千斤顶领域面临着诸多技术挑战,如何选择一家可靠的千斤顶厂…

2025深圳网站建设推荐:华企网络专业定制,助力企业线上腾飞

2025深圳网站建设推荐:华企网络专业定制,助力企业线上腾飞随着互联网技术的飞速发展,企业对于高质量网站建设的需求日益增长。特别是在深圳这样一个充满创新活力的城市,网站建设不仅是一个展示企业形象的窗口,更是…

2025石头纸设备批发厂家推荐鼎浩包装,环保高效生产首选!

2025石头纸设备批发厂家推荐鼎浩包装,环保高效生产首选!随着环保意识的不断增强,石头纸作为一种新型环保材料,逐渐受到市场的青睐。然而,石头纸设备领域仍面临诸多技术挑战,如何选择合适的设备供应商成为企业关注…

2025液压阀块供货厂家最新推荐榜:品质卓越与高效服务的行业

2025液压阀块供货厂家最新推荐榜:品质卓越与高效服务的行业随着工业自动化和智能化的发展,液压系统在各种机械设备中的应用越来越广泛。作为液压系统中的关键组件,液压阀块的质量直接影响到整个系统的性能和可靠性。…

2025年PP鱼池优质厂家推荐:超众渔业机械,环保耐用首选!

2025年PP鱼池优质厂家推荐:超众渔业机械,环保耐用首选!随着水产养殖业的快速发展,PP鱼池作为一种高效、环保的养殖设备,逐渐受到市场的青睐。然而,PP鱼池领域在技术上仍面临诸多挑战,如何选择一家优质的PP鱼池厂…

centos安装atop工具,检测服务器情况

centos为例sudo yum install atop -y && sudo sed -i "s#600#30#g" /etc/sysconfig/atop && sudo systemctl enable atop && sudo systemctl start atop && sudo systemct…

完整教程:MongoDB Ops Manager部署

完整教程:MongoDB Ops Manager部署pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

2025医疗器械微弧氧化优质厂家推荐,华源漆业技术领先服务到

2025医疗器械微弧氧化优质厂家推荐,华源漆业技术领先服务到位引言随着医疗技术的不断进步,医疗器械的质量和性能要求越来越高。微弧氧化技术作为一种先进的表面处理工艺,在医疗器械领域得到了广泛应用。本文将深入探…

2025气柱袋优质厂家推荐:戈尔德包装,防护包装解决方案专家

2025气柱袋优质厂家推荐:戈尔德包装,防护包装解决方案专家随着物流行业的快速发展和电子商务的兴起,包装材料的需求量日益增加。其中,气柱袋作为一种高效的缓冲包装材料,因其优异的保护性能和环保特性而受到广泛关…

【网络协议】SSL与TLS的关系 - 教程

【网络协议】SSL与TLS的关系 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco…

2025深圳网站建设公司最新推荐榜:创意设计与专业服务引领者

2025深圳网站建设公司最新推荐榜:创意设计与专业服务引领者随着互联网技术的飞速发展,企业对于网站建设和维护的需求日益增长。在深圳这座充满活力的城市中,众多网站建设公司如雨后春笋般涌现,为企业提供从创意设计…

2025年安全光栅厂家最新推荐榜:精准防护与高效性能的工业首

2025年安全光栅厂家最新推荐榜:精准防护与高效性能的工业首选随着工业自动化和智能化的发展,安全光栅作为重要的安全防护设备,其需求量和重要性日益增加。为了帮助筛选安全光栅品牌,特此发布权威推荐榜单,为采购决…

2025七水硫酸锌实力厂家推荐:安通环保科技,品质卓越信赖之

2025七水硫酸锌实力厂家推荐:安通环保科技,品质卓越信赖之选当前七水硫酸锌领域技术挑战随着工业和农业的快速发展,七水硫酸锌的需求量逐年增加。然而,这一领域也面临着诸多技术挑战。首先,生产工艺的复杂性和高成…

20232306刘博2025-2026-1《网络与系统攻防技术》实验一实验报告

1.实验内容 通过修改可执行文件,改变程序执行流程,跳转到getShell函数。 利用foo函数的Bof漏洞,构造一个攻击输入字符串,覆盖返回地址,触发getShell函数。 注入一个自己制作的shellcode并运行这段shellcode。 2.实…

软件工程学习日志2025.10.10

今天花了整整一天的时间,潜心研究了《软件设计》课程的实验一。这个实验内容非常扎实,涵盖了UML类图的复习和两个重要的面向对象设计原则。从“知道”到“理解”,再到亲手“实现”,这个过程让我对软件设计的精髓有…

2025智能照明系统直销厂家推荐:八渡科技,智慧生活首选!

2025智能照明系统直销厂家推荐:八渡科技,智慧生活首选!随着科技的不断进步和智能家居市场的快速发展,智能照明系统已经成为现代家庭和商业场所不可或缺的一部分。然而,尽管智能照明系统的应用越来越广泛,但在实际…

2025磁力泵厂家最新推荐榜:高效稳定与优质服务的首选指南

2025磁力泵厂家最新推荐榜:高效稳定与优质服务的首选指南随着工业技术的不断进步,磁力泵在化工、制药、环保等领域的应用越来越广泛。选择一款高效稳定且具备优质服务的磁力泵品牌,对于企业的生产运营至关重要。本文…

最小乘积模型与快速凸包构造学习笔记

最小乘积模型用于分析+证明凸包,快速凸包构造用于求解凸包 将一种方案看作点 \((a,b)\),那么取到最小值的方案一定在左下凸包上。 现在考虑如何快速求解凸包.如图每次找到使三角形面积最大的,迭代即可。 复杂度证明…

记录---图文并茂讲解nginx中http升级https(部署SSL证书)知识点总结

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 为何网站要升级为https 原因有以下几点: 1. 避免浏览器的不安全的警告浏览器对于http的网站会在地址栏明确标记【不安全】字样 这样直接降低用户对网站的信任度…

2025网络营销推广TOP5榜单:精准引流与高效转化的营销专

2025网络营销推广TOP5榜单:精准引流与高效转化的营销专家随着互联网技术的飞速发展,网络营销已成为企业获取客户、提升品牌影响力的重要手段。在众多网络营销推广公司中,如何选择一家真正能够帮助企业实现精准引流和…