1.2总结

文章讨论了一个关于序列构建的问题,其中序列的价值由相邻项的差值的个数决定。在给定序列长度k和最大值n的情况下,目标是生成一个递增序列,使得价值最大化。通过调整序列中的元素,使得相邻项的差值包括2、3、4等,以增加价值。文章中提供了一段C语言代码来实现这个过程,从基础序列开始,逐步增加元素来优化序列价值,确保不超过最大值的限制。
摘要由CSDN通过智能技术生成

https://vjudge.net/contest/536521#problem/B

给出一个k,表示序列长度,n表示序列最大值,序列的价值为相邻两项差的元素个数,如:

1 2 3 4 5的价值为1,因为没每两项只差都是1,1 2 5 6 7的价值为2,每两项之差是3或1

如此,再最大值一定的情况下,要想元素多,元素就要小,因此价值序列(每两项只差)为 1 2 3 4

如 1 2 4 7 11

我们首先要保证能够输出一个递增序列,如第一组k=5,n=9时,先让序列为1 2 3 4 5,再在最大值不超过9,的情况下来改造。目前该序列价值是1,要让他变大,就要让某两项只差为2,3,4,如果让a3-a2=2,那么1 2 4 5 6,我们让第三项变大1,这样为了维持递增性,后项都要变大1,原来的最大值从5变成6,为了不超过最大值9,价值序列之和不能超过9-5=4,再此情况下,1+2<4<1+2+3,所以我们先将第三项加一,1 2 4 5 6,再将第四项加二,1 2 4 7 8,相邻只差分别为,1 2 3 1,价值为3,因为

4>1+2,我们要变大两个数字,所以我的代码是从倒数第2项开始变大,只要符合题意便可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值