注:官方题解的必要性证明是错误的
这里不用分类讨论的方法,因为浪费时间且容易考虑不周,这里将x,y,z看成已知量,将边的个数看成未知量,E(a,b)(a<b)表示连接数a和数b的边的数目,判断关于边的个数的方程是否存在解
具体有哪些边:0-0,0-1,0-2,1-1,1-2,没有2-2边,因为2两边的数必须都比他小
编辑
#include<bits/stdc++.h>
using namespace std;
using ll=long long ;
int main()
{
ios::sync_with_stdio(0);cin.tie(0);
ll T;cin>>T;
while(T--){
ll x,y,z;cin>>x>>y>>z;
ll l=max(0LL,y+2*z-2*x),r=min(2*z,y);
ll flag=1;
if(l>r) flag=0;
else {
if((y-l)&1 && r<l+1) flag=0;
}
if(flag) cout<<"Yes"<<"\n";
else cout<<"No"<<"\n";
}
return 0;
}