题解
构造题,先想特殊情况再验证
构造一个 \(n-k+1,1\)
不成立的条件是 \(2*(n-k+1)\leq n\),相当于 \(2k \geq n+2\),即 k 大于 n 的一半 ,能构造的第一多的 k 是 n ,第二多 是 \(n/2+1\) ,易得不成立
code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
void solve()
{
ll n,k;
cin>>n>>k;
if(n==k)
{
cout<<"yes\n1\n"<<1<<'\n';
}
else if(2LL*(n-k+1LL)<=n)
{
cout<<"no\n";
}
else
{
cout<<"yes\n2\n";
cout<<n-k+1LL<<' '<<1<<'\n';
}
}
int main()
{
ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int t=1;
cin>>t;
while(t--) solve();
return 0;
}
标签:ll,long,solve,Jewels,构造,Buying
From: https://www.cnblogs.com/pure4knowledge/p/18311432