专栏文章

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

P9034题解参与者 2已保存评论 3

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
3 条
当前快照
1 份
快照标识符
@miod7rvi
此快照首次捕获于
2025/12/02 17:17
3 个月前
此快照最后确认于
2025/12/02 17:17
3 个月前
查看原文
好题啊,不知道怎么想出来的。

思路

看第三个条件,不难发现只有两种情况成立。第一种情况是集合中只有 11,第二种情况是集合中有 00
接着看第四个条件,此条件中的 mex(S){\operatorname{mex}}(S) 比较有意思,我们对此进行分析。
  • mex(S)=0{\operatorname{mex}}(S)=0,此时仅有 S={1,1}S=\left\{ 1,1\right\} 这一种情况。
  • mex(S)=1{\operatorname{mex}}(S)=1,无解。
  • mex(S)=2{\operatorname{mex}}(S)=2S={0,,0,1,1,q}S=\left\{0,\dots,0,1,1,q\right\},其中 0qn0\leq q \leq nq0,2q\neq 0,2。有 n1n-1 种情况。
  • mex(S)=3{\operatorname{mex}}(S)=3S={0,,0,1,2,q}S=\left\{0,\dots,0,1,2,q\right\},其中 0qn0\leq q \leq nq0,1,3q\neq 0,1,3。有 n2n-2 种情况。此外有一个特殊情况为 S={0,,0,1,1,1,2}S=\left\{0,\dots,0,1,1,1,2\right\}
  • mex(S)=4{\operatorname{mex}}(S)=4,此时仅有 S={0,,0,1,1,2,3}S=\left\{0,\dots,0,1,1,2,3\right\} 这一种情况。
  • mex(S)5{\operatorname{mex}}(S)\geq 5,无解。
nnkk 进行分类讨论即可。

代码

CPP
#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;
}

评论

3 条评论,欢迎与作者交流。

正在加载评论...