题解:P11204 「Cfz Round 9」Lone

· · 题解

方法好像比 std 简单。

显然 m=n 时是可以的。下面考虑 m>n 的情况。

我们让所有每一根小木棍的长度尽量平均,那么两根小木棍长度之差最大为 1。则除非有至少两根长度为 1 的小木棍(此时一定可以选出三根长度分别为 1,1,2 的小木棍),其他情况一定可以满足要求。

我们考虑什么时候不会存在至少两根长度为 1 的小木棍。因为如果存在,最短的小木棍长度为 \left\lfloor\dfrac{m}{n}\right\rfloor 应该为 1,所以 m\geqslant 2n 时不会存在;并且因为至少要有两根,所以 m\ne 2n-1 时也不会存在。因此 m\geqslant 2n-1 时不会存在多于一根长度为 1 的小木棍,一定可以满足要求,直接判断即可。

#include<bits/stdc++.h>
using namespace std;

int main(){
    int t;cin>>t;
    while(t--){
        int n,m;cin>>n>>m;
        if(m==n || m>=n*2-1) puts("Yes");
        else puts("No");
    }
    return 0;
}