问题陈述
给你N,数组A和A0的大小,这是数组的第一个元素。数组的其他元素可以通过以下方法计算:
如果我是奇数
I从1到N-1不等
数组遵循一个特殊属性。数组偶数指数处的元素为偶数,奇数指数处的元素为奇数。您的第一个任务是准备这个数组,使数组的和最小化,并且数组遵循所有给定的条件。你会被问到问题。每个查询都由一个整数X组成。如果我们可以通过添加数组A的一些元素来实现它,则必须打印true;如果不可能,则必须打印false。
约束条件
5000
样本测试案例
输入
1
4 2
5
3 27 36 68 88输出
false
true
false
true
true解释-数组元素为2,7,20,61
我尝试过一种朴素的dp方法,但收到的内存限制超过了。
发布于 2019-09-25 13:40:57
A[i] >= 3*A[i-1] , if i is odd修正当我是奇数时,它是乘法而不是加法。
要点:
A[i] > A[i-1]+A[i-2]......A[0]
现在开始解决方案
对于每一个给定的X,K是数组A的大小,数组A的数字按递增的顺序排列,其中Ai<=10^18
for(i=k;i>=0;i--)
{
if(X>=A[i])
X-=A[i];
}
if(X==0)
cout<<"true\n";
else
cout<<"false\n";https://stackoverflow.com/questions/58098417
复制相似问题