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
直接模拟即可,这里用到了map,queue,string,stringstream,总之全用的标准库(咳咳咳),打算在重新写一份代码(代码待补),不借助map和queue,还有一件事,这道题提交了好多次都是WA。。。然后就把题读了好几遍,没发现什么特殊的情况存在,然后注释掉了一句代码就过了,std::ios::sync_with_stdio(false),就这句,解除cin与stdin的同步,据说会加快cin的速度,我怕会超时就把这段代码加上了(最后80ms),结果问题就出在这了,还有就是换行cout不用<<endl貌似也能加快速度。。。

代码:

#include<iostream>
#include<sstream>
#include<string>
#include<queue>
#include<map>
using namespace std; map<string,string> mp1,mp2;
typedef queue<string> Queue;
Queue New,Change,None; void Replace(string &str){
int len = str.size();
for(int i=;i<len;i++)
if(str[i] == ':'|| str[i]=='{' || str[i]=='}' || str[i] == ',') str[i] = ' ';
} void String_work(string &pre,string now){
Replace(pre); Replace(now);
stringstream ss(pre),mm(now);
string tmp,str;
while(ss >> str){
ss >> tmp;
mp1[str] = tmp;
}
while(mm >> str){
mm >> tmp;
mp2[str] = tmp;
}
} void Add_to_queue(){
map<string,string> ::iterator it;
for(it=mp2.begin();it!=mp2.end();it++){
if(mp1.find((*it).first)==mp1.end())
New.push((*it).first);
else if(mp1[(*it).first]!=(*it).second) {
Change.push((*it).first);
mp1.erase((*it).first);
}
else mp1.erase((*it).first); }
for(it=mp1.begin();it!=mp1.end();it++){
None.push((*it).first);
}
} void print_ans(Queue &Q,char c){
cout<< c;
while(!Q.empty()){
cout << Q.front(); Q.pop();
if(Q.empty()) cout << "\n" ; else cout <<",";
}
} void Solve_question(){
bool flag = true;
if(!New.empty()) {flag = false; print_ans(New,'+');}
if(!None.empty()) {flag = false; print_ans(None,'-');}
if(!Change.empty()) {flag = false; print_ans(Change,'*');}
if(flag) cout <<"No changes\n";
cout <<"\n";
} void Init_map(){
mp1.clear(); mp2.clear();
} int main(){
//std::ios::sync_with_stdio(false);!!!不能用!!!切记!!!
int T;
string pre,now;
cin >> T;
while(T--){
Init_map();
cin >> pre >> now;
String_work(pre,now);
Add_to_queue();
Solve_question();
}
}


H-Updating a Dictionary (模拟)的更多相关文章

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

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

  2. Problem C Updating a Dictionary

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

  3. csuoj 1113: Updating a Dictionary

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

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

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

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

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

  6. Updating a Dictionary UVA - 12504

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

  7. CSU 1113 Updating a Dictionary

    传送门 Time Limit: 1000MS   Memory Limit: 131072KB   64bit IO Format: %lld & %llu Description In th ...

  8. H.数7(模拟)

    1212: H.数7 时间限制: 1 Sec  内存限制: 64 MB 提交: 8  解决: 5 标签提交统计讨论版 题目描述 数7是一个简单的饭桌游戏,有很多人围成一桌,先从任意一人开始数数,1.2 ...

  9. 【UVA】12504 Updating a Dictionary(STL)

    题目 题目     分析 第一次用stringstream,真TMD的好用     代码 #include <bits/stdc++.h> using namespace std; int ...

随机推荐

  1. Django【第12篇】:Django之中间件

    自定义验证规则以及中间件简单介绍 1.python2和python3中的区别 对于python2内置的字符串类型有str和unicode 比如:"abc"是字符串,u"你 ...

  2. 微信小程序 背景音频播放遇到的深坑

    1.微信前台(聊天页)暂停后回到小程序,再点击播放,播放信息消失,无法续播 ios可以监听到 (onStop已经停止)事件, 安卓无法监听到,只能监听到普通的暂停事件. 2.

  3. OpenGL立方体

    直接画 #include <windows.h> #include <GL/glut.h> #include <stdio.h> #include <stri ...

  4. 2019年开发App记录

    Pod 制作私有库参考 https://www.jianshu.com/p/f903ecf8e882 Pod私有库的升级 改代码部分,到Example文件夹执行pod install ,修改XXX.s ...

  5. mysql BETWEEN操作符 语法

    mysql BETWEEN操作符 语法 作用:选取介于两个值之间的数据范围.这些值可以是数值.文本或者日期.大理石平台 语法:SELECT column_name(s) FROM table_name ...

  6. codevs 4064 组合 x

    很久之前发过啦~不过删掉了...再发一下 4064 组合 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 组合就 ...

  7. 【bzoj3038】上帝造题的七分钟2

    *题目描述: XLk觉得<上帝造题的七分钟>不太过瘾,于是有了第二部. “第一分钟,X说,要有数列,于是便给定了一个正整数数列. 第二分钟,L说,要能修改,于是便有了对一段数中每个数都开平 ...

  8. HDU 1002 A - A + B Problem II (大数问题)

    原题代号:HDU 1002 原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002 原题描述: Problem Description I have a ...

  9. 关于vsftpd连接出现“响应: 530 Permission denied”的坑

    在设置vsftpd.conf文件中的变量 anonymous_enable=YES 需要使用用户进行登录,如果conf文件内缺少下列三行中的任何一行都需要补充完整,不然就会出现 “响应: 530 Pe ...

  10. POJ 1384 Piggy-Bank (完全背包)

    Piggy-Bank 题目链接: http://acm.hust.edu.cn/vjudge/contest/130510#problem/F Description Before ACM can d ...