The League of Sequence Designers

博客内容涉及构造序列问题,通过设定序列最大值为1999,利用错误算法(连续子序列和乘以序列长度)与正确算法对比,构造出序列差值等于目标k的解。代码实现中需要注意数值范围限制,避免直接将k加到某一项导致错误。
摘要由CSDN通过智能技术生成

题目是构造题
先从最简单的条件开始,因为规定n<2000;
所以绝对给不了大于2000的序列;
因为L只给定最小值,所以干脆让L最大;
即L=1999;
题目所给的错误的算法,是在最大连续子序列和(dp)的基础上,乘以序列长度,所以构造一个除第一个数以外,使序列和不断递增的序列;
即 对于 2<=i<=1999 ai>0;
a1为负数 不如让 a1=-1;
a2~a1999为正数 不如使其大于1;
考虑必须大于k,所以构造
i=2~1999 sum(ai)=1999+k;
这样就构造出了错误的序列和 1998*(1999+k)
和正确的序列和 1999*(1998+k)
相减恰好为k;
需要注意的是 每一项最大只有 10^6 所以如果直接将k加到某一项 会wa
代码如下:

#include <bits/stdc++.h>
using namespace std;

//构造题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值