UVA 12504(模拟)

来源:互联网 发布:mac有什么网游加速器啊 编辑:程序博客网 时间:2024/06/17 07:26







题意:有2个集合,请你输出三个状态的改变:


1,.从原集合增加了元素,在输出前输出  +

2.,.从原集合删去了元素,在输出前输出  -

3.,.从原集合改变了元素,在输出前输出  *


题解:直接模拟就可以了,这里注意可以为空集合,一定要注意处理这种情况



#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<string>#include<vector>#include<queue>#include<map>#include<set>#include<utility>using namespace std;#define LL long long #define N int(1e5+10)#define lson L,mid,rt<<1#define rson mid+1,R,rt<<1|1char s[N];map<string,string>v1;map<string,string>v2;set<string>st;vector<string>ans1;vector<string>ans2;vector<string>ans3;int main (){#ifdef CDZSCfreopen("i.txt","r",stdin);#endifint n,t,cas=0;scanf("%d",&t);while(t--){ans1.clear();ans3.clear();ans2.clear();st.clear();v1.clear();v2.clear();string tmp1,tmp2;scanf("%s",s);int len = strlen(s);int ok=0;for(int i = 1; i<len;i++){if(s[i]==':'){ok=1;}if(s[i]==','||s[i]=='}'){ok=0;v1[tmp1]=tmp2;st.insert(tmp1);tmp1.clear();tmp2.clear();}if(ok==0&&(s[i]!='{'&&s[i]!=','&&s[i]!=':'))tmp1+=s[i];if(ok==1&&(s[i]!='{'&&s[i]!=','&&s[i]!=':'))tmp2+=s[i];}tmp1.clear();tmp2.clear();ok=0;scanf("%s",s);len = strlen(s);for(int i = 1; i<len;i++){if(s[i]==':'){ok=1;}if(s[i]==','||s[i]=='}'){ok=0;v2[tmp1]=tmp2;st.insert(tmp1);tmp1.clear();tmp2.clear();}if(ok==0&&(s[i]!='{'&&s[i]!=','&&s[i]!=':'))tmp1+=s[i];if(ok==1&&(s[i]!='{'&&s[i]!=','&&s[i]!=':'))tmp2+=s[i];}int okK=1;if(v1.count(""))v1.erase("");if(v2.count(""))v2.erase("");if(st.count(""))st.erase("");set<string>::iterator it;for(it=st.begin();it!=st.end();it++){if(v1.count(*it)&&v2.count(*it)){if(v1[*it]==v2[*it])continue;else{ans1.push_back(*it);okK=0;}}else if(v1.count(*it)&&!v2.count(*it)){okK=0;ans2.push_back(*it);}else if(!v1.count(*it)&&v2.count(*it)){okK=0;ans3.push_back(*it);}}if(okK||v1.count("")&&v2.count("")){puts("No changes");puts("");continue;}else{for(int i=0;i<ans3.size();i++)printf("%c%s",i==0?'+':',',ans3[i].c_str());if(ans3.size())puts("");for(int i=0;i<ans2.size();i++)printf("%c%s",i==0?'-':',',ans2[i].c_str());if(ans2.size())puts("");for(int i=0;i<ans1.size();i++){printf("%c%s",i==0?'*':',',ans1[i].c_str());}if(ans1.size())puts("");}puts("");}return 0;}


0 0
原创粉丝点击