搭积木
#include<cstdio>
#include<vector>
using namespace std;
vector<int> v[10005];
int main(){
int n,m,a,b;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
v[i].push_back(i);
}
for(int i=0;i<m;++i){
scanf("%d%d",&a,&b);
if(a==b){
continue;
}
for(int j=0;j<v[b].size();++j){
v[a].push_back(v[b][j]);
}
vector<int>().swap(v[b]);
}
for(int i=1;i<=n;++i){
for(int j=0;j<v[i].size();++j){
if(j!=v[i].size()-1) printf("%d ",v[i][j]);
else printf("%d",v[i][j]);
}
printf("\n");
}
return 0;
}
计算集合的并
#include<cstdio>
#include<set>
using namespace std;
set<int> s;
int main(){
int n,m,x,cnt=0;
scanf("%d%d",&n,&m);
for(int i=0;i<n+m;++i){
scanf("%d",&x);
s.insert(x);
}
for(set<int>::iterator it=s.begin();it!=s.end();++it){
if(cnt!=s.size()-1){
printf("%d ",(*it));
++cnt;
}else{
printf("%d\n",(*it));
}
}
return 0;
}
面试
#include<cstdio>
#include<map>
using namespace std;
map<int,int> mp;
int main(){
int n,x,ans1,ans2;
scanf("%d",&n);
for(int i=0;i<n;++i){
scanf("%d",&x);
++mp[x];
}
ans2=0;
for(map<int,int>::iterator it=mp.begin();it!=mp.end();++it){
if((it->second)>=ans2){
ans2=it->second;
ans1=it->first;
}
}
printf("%d %d\n",ans1,ans2);
return 0;
}
学英语
#include<cstdio>
#include<set>
#include<string>
#include<iostream>
using namespace std;
set<string> s;
string ss;
int main(){
int n,op;
cin>>n;
for(int i=0;i<n;++i){
cin>>op>>ss;
for(int j=0;j<ss.size();++j){
if(ss[j]>='A'&&ss[j]<='Z'){
ss[j]='a'+(ss[j]-'A');
}
}
if(op==0){
s.insert(ss);
}else{
if(s.count(ss)){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}
}
return 0;
}