题解:P9034 「KDOI-04」Again Counting Set

· · 题解

好题啊,不知道怎么想出来的。

思路

看第三个条件,不难发现只有两种情况成立。第一种情况是集合中只有 1,第二种情况是集合中有 0

接着看第四个条件,此条件中的 {\operatorname{mex}}(S) 比较有意思,我们对此进行分析。

nk 进行分类讨论即可。

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,n,k,ans;
signed main(){
    cin>>T;
    while(T--){
        ans=0;
        cin>>n>>k;
        if(k==2) ans=1;
        if(k>=4){
            ans=1;
            if(n>=2) ans+=n-1;
            if(n>=3) ans+=n-3;
        }
        if(k>=5){
            if(n>=2) ans++;
            if(n>=3) ans++; 
        }
        cout<<ans<<endl;
    }
    return 0;
}