传送门

Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu

Description

In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, and values are non-negative integers. Given an old dictionary and a new dictionary, find out what were changed.
Each dictionary is formatting as follows:
{key:value,key:value,...,key:value}
Each key is a string of lower-case letters, and each value is a non-negative integer without leading zeros or prefix '+'. (i.e. -4, 03 and +77 are illegal). Each key will appear at most once, but keys can appear in any order.

Input

The first line contains the number of test cases T (T<=1000). Each test case contains two lines. The first line contains the old dictionary, and the second line contains the new dictionary. Each line will contain at most 100 characters and will not contain any whitespace characters. Both dictionaries could be empty.
WARNING: there are no restrictions on the lengths of each key and value in the dictionary. That means keys could be really long and values could be really large.

Output

For each test case, print the changes, formatted as follows:
·First, if there are any new keys, print '+' and then the new keys in increasing order (lexicographically), separated by commas.
·Second, if there are any removed keys, print '-' and then the removed keys in increasing order (lexicographically), separated by commas.
·Last, if there are any keys with changed value, print '*' and then these keys in increasing order (lexicographically), separated by commas.
If the two dictionaries are identical, print 'No changes' (without quotes) instead.
Print a blank line after each test case.

Sample Input

3
{a:3,b:4,c:10,f:6}
{a:3,c:5,d:10,ee:4}
{x:1,xyz:123456789123456789123456789}
{xyz:123456789123456789123456789,x:1}
{first:1,second:2,third:3}
{third:3,second:2}

Sample Output

+d,ee
-b,f
*c No changes -first

------------------------------------------------------------------------------

简单题,注意implementation。 

------------------------------------------------------------------------------
 WA
#include <cstdio>
#include <iostream>
#include <cctype>
#include <map>
#include <vector>
#include <string>
#include <algorithm>
#define pb push_back using namespace std;
map<string, string> a, b;
vector<string> aa, bb;
int main(){
//freopen("in", "r", stdin);
int T;
string s, t;
char ch;
for(cin>>T; T--; cout<<endl){
for(;cin>>ch;){
if(isalpha(ch)) s+=ch;
else if(ch==':'){
while(cin>>ch, isdigit(ch)){
t+=ch;
}
a[s]=t;
aa.pb(s);
s.clear();
t.clear();
if(ch=='}') break; //error
}
}
for(;cin>>ch;){
if(isalpha(ch)) s+=ch;
else if(ch==':'){
while(cin>>ch, isdigit(ch)){
t+=ch;
}
bb.pb(s);
b[s]=t;
s.clear();
t.clear();
if(ch=='}') break; //error
}
}
sort(aa.begin(), aa.end());
sort(bb.begin(), bb.end());
bool fir=true, nc=true;
for(int i=; i<bb.size(); i++){
string &tmp=bb[i];
if(a[tmp].empty()){
if(fir) cout<<'+'+tmp, fir=false;
else cout<<','+tmp;
}
}
if(!fir) cout<<endl, nc=;
fir=true;
for(int i=; i<aa.size(); i++){
string &tmp=aa[i];
if(b[tmp].empty()){
if(fir) cout<<'-'+tmp, fir=false;
else cout<<','+tmp;
}
}
if(!fir) cout<<endl, nc=;
fir=true;
for(int i=; i<bb.size(); i++){
string &tmp=bb[i];
if(!a[tmp].empty()&&!b[tmp].empty()&&a[tmp]!=b[tmp]){
if(fir) cout<<'*'+tmp, fir=false;
else cout<<','+tmp;
}
}
if(!fir) cout<<endl, nc=;
if(nc) cout<<"No changes"<<endl;
a.clear(), b.clear(), aa.clear(), bb.clear();
} }
 AC 
#include <cstdio>
#include <iostream>
#include <cctype>
#include <map>
#include <vector>
#include <string>
#include <algorithm>
#define pb push_back using namespace std;
map<string, string> a, b;
vector<string> aa, bb;
int main(){
freopen("in", "r", stdin);
int T;
string s, t;
char ch;
for(cin>>T; T--; cout<<endl){
for(;cin>>ch;){
if(isalpha(ch)) s+=ch;
else if(ch==':'){
while(cin>>ch, isdigit(ch)){
t+=ch;
}
a[s]=t;
aa.pb(s);
s.clear();
t.clear();
}
if(ch=='}') break;
}
//cout<<aa.size()<<endl;
for(;cin>>ch;){
if(isalpha(ch)) s+=ch;
else if(ch==':'){
while(cin>>ch, isdigit(ch)){
t+=ch;
}
bb.pb(s);
b[s]=t;
s.clear();
t.clear();
}
if(ch=='}') break;
}
sort(aa.begin(), aa.end());
sort(bb.begin(), bb.end());
bool fir=true, nc=true;
for(int i=; i<bb.size(); i++){
string &tmp=bb[i];
if(a[tmp].empty()){
if(fir) cout<<'+'+tmp, fir=false;
else cout<<','+tmp;
}
}
if(!fir) cout<<endl, nc=;
fir=true;
for(int i=; i<aa.size(); i++){
string &tmp=aa[i];
if(b[tmp].empty()){
if(fir) cout<<'-'+tmp, fir=false;
else cout<<','+tmp;
}
}
if(!fir) cout<<endl, nc=;
fir=true;
for(int i=; i<bb.size(); i++){
string &tmp=bb[i];
if(!a[tmp].empty()&&!b[tmp].empty()&&a[tmp]!=b[tmp]){
if(fir) cout<<'*'+tmp, fir=false;
else cout<<','+tmp;
}
}
if(!fir) cout<<endl, nc=;
if(nc) cout<<"No changes"<<endl;
a.clear(), b.clear(), aa.clear(), bb.clear();
}
}

CSU 1113 Updating a Dictionary的更多相关文章

  1. CSU 1113 Updating a Dictionary(map容器应用)

    题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 解题报告:输入两个字符串,第一个是原来的字典,第二个是新字典,字典中的元素的格式为 ...

  2. csuoj 1113: Updating a Dictionary

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1113 1113: Updating a Dictionary Time Limit: 1 Sec  ...

  3. 湖南生第八届大学生程序设计大赛原题 C-Updating a Dictionary(UVA12504 - Updating a Dictionary)

    UVA12504 - Updating a Dictionary 给出两个字符串,以相同的格式表示原字典和更新后的字典.要求找出新字典和旧字典的不同,以规定的格式输出. 算法操作: (1)处理旧字典, ...

  4. [刷题]算法竞赛入门经典(第2版) 5-11/UVa12504 - Updating a Dictionary

    题意:对比新老字典的区别:内容多了.少了还是修改了. 代码:(Accepted,0.000s) //UVa12504 - Updating a Dictionary //#define _XieNao ...

  5. [ACM_模拟] UVA 12504 Updating a Dictionary [字符串处理 字典增加、减少、改变问题]

      Updating a Dictionary  In this problem, a dictionary is collection of key-value pairs, where keys ...

  6. Problem C Updating a Dictionary

    Problem C     Updating a Dictionary In this problem, a dictionary is collection of key-value pairs, ...

  7. Updating a Dictionary UVA - 12504

    In this problem, a dictionary is collection of key-value pairs, where keys are lower-case letters, a ...

  8. Uva 511 Updating a Dictionary

    大致题意:用{ key:value, key:value, key:value }的形式表示一个字典key表示建,在一个字典内没有重复,value则可能重复 题目输入两个字典,如{a:3,b:4,c: ...

  9. Uva - 12504 - Updating a Dictionary

    全是字符串相关处理,截取长度等相关操作的练习 AC代码: #include <iostream> #include <cstdio> #include <cstdlib& ...

随机推荐

  1. [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

    近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...

  2. Android Studio Jar、so、library项目依赖

    Eclipse跟AS的不同 从Eclipse到AS不要带着在Eclipse中的主观色彩去在AS中使用,从项目的构成到构建是不同的,下面列举在Eclipse和AS中的一些概念的区别: WorkSpace ...

  3. 【转】【Asp.Net】Asp.net发送邮件的两种方法小结

    这几天看了一下Asp.net发送邮件方面的东西,记得之前的IIS6上有SMTP服务器,可以直接利用这个进行邮件发送,现在的开发环境是Windows 7,找了半天没有找到,到网络上查了才知道原来wind ...

  4. 微软职位内部推荐-Principal Development Lead

    微软近期Open的职位: Job Title: Principal Development Lead Work Location: Suzhou, China This is a once in a ...

  5. C++ map的使用

    C++ map的基本操作和使用 来源:(http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html) - C++ map的基本操作和使用_Live_新浪博 ...

  6. PHP基础18:require和include

    <?phph //1.通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前) //include 和 require 语句是相同 ...

  7. js计算两个日期相隔几小时几分钟?

        var dt1 = "2009-11-5 10:30"       var dt2 = "2009-11-8 9:20"     function ge ...

  8. C#操作JSON

    http://www.cnblogs.com/LiZhiW/p/3624729.html C#操作JSON 1. .NET对JSON的支持介绍............................. ...

  9. 使用ObjectAnimator设置动画

    ObjectAnimator是ValueAnimator的子类,他本身就已经包含了时间引擎和值计算,所以它拥有为对象的某个属性设置动画的功能.这使得为任何对象设置动画更加的容易.你不再需要实现 Val ...

  10. 20155301-滕树晨 第二次随笔作业--从现有技能获取的经验应用于JAVA中

    第二次随笔--从现有技能获取的经验应用于JAVA中 你有什么技能比大多人(超过90%以上)更好? 这个想了半天,有一个是我乒乓球还是比较擅长的,在学校里可能比百分之90的人要强,在外面肯定是不如了.再 ...