
题意:
让你构造一个长度为 n nn 的序列,并且 n nn 个数的和为 S SS,问能不能找到一个 1 − n 1-n1−n 的数 k kk,使得数组里找不出一个子序列的和为 k kk 或者 n − k n-kn−k;
让 k = 1 k=1k=1,然后数组只要不出现 1 11 和 n − 1 n-1n−1 就好了,只要 s > = 2 ∗ n s >= 2*ns>=2∗n,也就是由 n − 1 n-1n−1 个 2 22 和一个 s − ( n − 1 ) ∗ 2 ! = 1 s-(n-1)*2 != 1s−(n−1)∗2!=1 构成就可以。
AC代码:
int n, s, k;
int main()
{
int t;
sdd(n, s);
if (s < n * 2)
puts("No");
else
{
puts("YES");
rep(i, 1, n - 1)
printf("2 ");
pd(s - 2 * (n - 1));
puts("1");
}
return 0;
}
版权声明:本文为qq_43627087原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。