题意:让你构造一个长度为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 }