萌新求调,,ԾㅂԾ,,

AC了嘛

2 个赞

@曾天云 没有AC,现在WA了,ԾㅂԾ,

改完以后的代码:

#include<bits/stdc++.h>
using namespace std;
int n,x,y,a;
set<int>s[15];
set<int>sw;
int main(){
	cin>>n;
	while(n--){
		cin>>a;
		if(a==6){
			cin>>x;
			cout<<s[x].size()<<'\n';
		}
		else{
			cin>>x>>y;
			if(a==1)s[x].insert(y);
			else if(a==2){
				if(s[x].count(y)!=0){
					set<int>::iterator it=s[x].find(y);
					s[x].erase(it);
				}
			}
			else if(a==3){
				for(set<int>::iterator it=s[y].begin();it!=s[y].end();it++)s[x].insert(*it);
				s[y].clear();
			}
			else if(a==4){
				sw.clear();
				for(set<int>::iterator it=s[x].begin();it!=s[x].end();it++)sw.insert(*it);
				for(auto it:s[x])if(s[y].count(it))sw.insert(it);
				s[y].clear();
				s[x]=sw;
			}
			else{
				if(s[x].count(y))puts("Yes");
				else puts("No");
			}
		}
	}
	return 0;
}
1 个赞

没有人求调了吗QAQ

1 个赞

@王钰宸涵 题目名?

1 个赞

@周子寓 #### 模板库应用2-集合1

1 个赞

题目里有特判,得加,不然过不了

2 个赞

那特判是什么呢

1 个赞

注意操作3与操作4:当x=y时,操作后将y清空,由于x=y,所以集合x是空集。

2 个赞

我当时也没写那个,然后调了很久

2 个赞

对呀,我的代码没有问题呀

1 个赞

@袁晟茜 我的代码中 s[y].clear() 由于 x=y 所以 s[x] 不是自然清空了吗

1 个赞

if(x==y) s[x].clear();
在a==3或4时都要加上

2 个赞

我这个0分,不信你试试,因为我当时和你一样的想法
https://www.luogu.com.cn/paste/ezwk3vlx

2 个赞

你的意思是代码要改成这样是吗

#include<bits/stdc++.h>
using namespace std;
int n,x,y,a;
set<int>s[15];
set<int>sw;
int main(){
	cin>>n;
	while(n--){
		cin>>a;
		if(a==6){
			cin>>x;
			cout<<s[x].size()<<'\n';
		}
		else{
			cin>>x>>y;
			if(a==1)s[x].insert(y);
			else if(a==2){
				if(s[x].count(y)!=0){
					set<int>::iterator it=s[x].find(y);
					s[x].erase(it);
				}
			}
			else if(a==3){
                if(x==y)s[x].clear();
                else{
				    for(set<int>::iterator it=s[y].begin();it!=s[y].end();it++)s[x].insert(*it);
				    s[y].clear();
                }
			}
			else if(a==4){
                if(x==y)s[x].clear();
                else{
        			sw.clear();
    				for(set<int>::iterator it=s[x].begin();it!=s[x].end();it++)sw.insert(*it);
				    for(auto it:s[x])if(s[y].count(it))sw.insert(it);
				    s[y].clear();
				    s[x]=sw;
                }
			}
			else{
				if(s[x].count(y))puts("Yes");
				else puts("No");
			}
		}
	}
	return 0;
}
1 个赞

这样应该可以过

2 个赞

eee,问题是没有过

1 个赞

s[x].erase(*it);

2 个赞

?什么意思

1 个赞

发 AC 代码,赶紧删掉

3 个赞

用迭代器需要写*it,但是auto不用,自己检查一下

2 个赞