#include<bits/stdc++.h>#defineendl'\n'usingnamespace std;typedeflonglong LL;constint N =1e5+10;int n, m, t;voidsolve(){
cin >> n >> m; t = n + m -2;if(t &1) cout <<"Yes"<< endl;else cout <<"No"<< endl;}intmain(){
cin.tie(0); cout.tie(0);
std::ios::sync_with_stdio(false);int T =1;
cin >> T;while(T --){solve();}return0;}
T2(思维,模拟,哈希表,位运算)
#include<bits/stdc++.h>#defineendl'\n'usingnamespace std;typedeflonglong LL;constint N =1e5+10;int n, m;int a[N];int xor_in =0, XOR_M;
unordered_map<int,int> mp;
unordered_map<int,int> in, out;boolcheck(){if(in.size()== m && xor_in == XOR_M){
cout <<"YES"<< endl;
cout <<0<< endl;returntrue;}if(in.size()== m -1&& out.size()==1){int target = XOR_M ^ xor_in;int idx = mp[target];if(idx !=0){
cout <<"YES"<< endl;
cout <<1<< endl;
cout <<(out.begin())->second <<' '<< idx << endl;returntrue;}}returnfalse;}voidsolve(){
cin >> n >> m;for(int i =1; i <= n; i ++) cin >> a[i];for(int i =1; i <= m; i ++) XOR_M ^= i;for(int i =1; i <= m; i ++){if(a[i]> m) out[a[i]]= i;else in[a[i]]= i, xor_in ^= a[i];}for(int i = m +1; i <= n; i ++) mp[a[i]]= i;if(check())return;for(int i =1, j = m +1; j <= n; i ++, j ++){if(a[i]>=1&& a[i]<= m){
in.erase(a[i]);
xor_in ^= a[i];}else out.erase(a[i]);if(a[j]>=1&& a[j]<= m) in[a[j]]= j, xor_in ^= a[j];else out[a[j]]= j;
mp.erase(a[j]);
mp[a[i]]= i;if(check())return;}
cout <<"NO"<< endl;}intmain(){
cin.tie(0); cout.tie(0);
std::ios::sync_with_stdio(false);int T =1;// cin >> T;while(T --){solve();}return0;}
T3(模拟,哈希表)
#include<bits/stdc++.h>#defineendl'\n'usingnamespace std;typedeflonglong LL;constint N =1e5+10;
unordered_map<string, unordered_map<string, unordered_set<string>>> fun;// name : args : type
string get_type(string op){
string ret;for(char c : op){if(c ==' ')break;
ret += c;}return ret;}
string get_name(string op){
string ret;int idx = op.find('('); idx --;for(; idx >=0; idx --){if(op[idx]==' ')break;
ret += op[idx];}reverse(ret.begin(), ret.end());return ret;}
string get_args(string op){int a = op.find('('), b = op.find(')');
op = op.substr(a +1, b - a -1); op +=',';
vector<string> ss; string t;for(char c : op){if(c ==',') ss.push_back(t), t ="";else t += c;}
string ret;for(string s : ss){if(s.find(' ')!=-1) ret += s.substr(0, s.find(' '))+",";else ret += s +",";}return ret;}voidsolve(){int T, code;
cin >> T;
string op;while(T --){
cin >> code;getline(cin, op);getline(cin, op);if(code ==1){
string type =get_type(op);
string name =get_name(op);
string args =get_args(op);if(fun.count(name)==0){
fun[name][args].insert(type);
cout <<"ok."<< endl;}else{if(fun[name].count(args)==0){
fun[name][args].insert(type);
cout <<"ok."<< endl;}else{
cout <<"method "<< name <<" is already defined."<< endl;}}}elseif(code ==2){
string type =get_type(op);
string name =get_name(op);
string args =get_args(op);if(fun.count(name)!=0&& fun[name].count(args)!=0) cout <<"ok."<< endl;elseif(fun.count(name)==0) cout <<"cannot find symbol "<< name <<"."<< endl;elseif(fun.count(name)!=0&& fun[name].count(args)==0){
cout <<"method "<< name <<" cannot be applied to given types."<< endl;}}}}intmain(){
cin.tie(0); cout.tie(0);
std::ios::sync_with_stdio(false);solve();return0;}