传送门:D - Game With Array

题意:让你构造一个长度为n的序列,并且n个数的和为S,问能不能找到一个1~n的数k,使得数组里找不出一个子序列的和为k或者n-k;

题解:最简单的想法肯定是让k=1,然后数组只要不出现1和n-1就好了,只要 s /n >= 2,也就是由n-1个2和一个 s-(n-1)*2 != 1 构成就可以。

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     ios::sync_with_stdio(false);
 8     cin.tie(0);
 9     cout.tie(0);
10     int n,m;
11     cin>>n>>m;
12     if(m/n>=2){
13         cout<<"YES"<<endl;
14         for(int i=0;i<n-1;i++) cout<<2<<' ';
15         cout<<m-(n-1)*2<<endl;
16         cout<<1<<endl;
17     }
18     else cout<<"NO"<<endl;
19     return 0;
20 }