【UVA】12504 Updating a Dictionary(STL)

题目

题目
?



?

分析

第一次用stringstream,真TMD的好用
?



?

代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    getchar();//回车
    while(n--)
    {
        string s1,s2;
        getline(cin,s1);
        getline(cin,s2);
        for(int i=0;i<s1.length();i++)
            if(!isalpha(s1[i]) && !isdigit(s1[i])) s1[i]=' ';
        for(int i=0;i<s2.length();i++)
            if(!isalpha(s2[i]) && !isdigit(s2[i])) s2[i]=' ';
        int l1=0,l2=0;
        map<string,string> m;
        map<string,string>::iterator it;
        vector<string> c,d,e;
        stringstream ss(s1),ss2(s2);
        string a,b;
        while(ss>>a)
        {
            ss>>b; m[a]=b; l1++;
        }
        while(ss2>>a)
        {
            ss2>>b; l2++;
            if(!m.count(a)) c.push_back(a);
            else if(m[a]!=b) d.push_back(a);
            if(m.count(a))
            {
                it=m.find(a);
                m.erase(it);
            }
        }
        sort(d.begin(),d.end());
        sort(c.begin(),c.end());
        if(c.size())
        {
            cout<<"+";
            for(int i=0;i<c.size();i++)
            {
                cout<<c[i];
                if(i==c.size()-1) cout<<endl;
                else cout<<",";
            }
        }
        if(m.size())
        {
            cout<<"-";
            for(map<string,string>::iterator i=m.begin();i!=m.end();i++)
            {
                if(i!=m.begin()) cout<<',';
                cout<<i->first;
            }
            cout<<endl;
        }
        if(d.size())
        {
            cout<<"*";
            for(int i=0;i<d.size();i++)
            {
                cout<<d[i];
                if(i==d.size()-1) cout<<endl;
                else cout<<',';
            }
        }
        if(!c.size()&&!d.size()&&!m.size()) puts("No changes");
        cout<<endl;
    }
    return 0;
}
时间: 2024-10-29 10:26:46

【UVA】12504 Updating a Dictionary(STL)的相关文章

【UVA】12504 - Updating a Dictionary(map,string,vector模拟)

一般的模拟题,一开始WA,可能是用string的容器放char,改成string就过了 14073581 12504 Updating a Dictionary Accepted C++ 0.032 2014-08-21 07:12:19 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<vector> #include<st

【UVA】10739 - String to Palindrome(动态规划)

比较水的动态规划 dp[i][j] 将原串 i ~ j 之内的字符转化为回文字符所需要的最小操作次数 其中删除操作和添加操作本质上是一样的. 三个状态转移方程: dp[i][j] = min(dp[i][j] ,dp[i + 1][j]); dp[i][j] = min(dp[i][j] ,dp[i + 1][j - 1]); dp[i][j] = min(dp[i][j] ,dp[i][j - 1]); 如果 i = j  dp[i][j] = 0; 14145138 10651 Pebble

【UVa】11212 Editing a Book(IDA*)

题目 题目 ? ? 分析 get一下IDA*的技巧,感觉总体来说不难,主要是剪枝比较难想. 这是lrj的代码,比较通俗易懂,关键就是选定一个区间再取出来,插入到一个位置,接下来转移到这个状态. ? ? 代码 #include <bits/stdc++.h> using namespace std; const int maxn=10; int n,a[maxn]; bool is_sorted() { for(int i=0;i<n-1;i++) if(a[i]>=a[i+1])

【UVa】1606 Amphiphilic Carbon Molecules(计算几何)

题目 题目 分析 跟着lrj学的,理解了,然而不是很熟,还是发上来供以后复习 代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn=1005; 5 6 struct Point 7 { 8 int x,y; 9 double rad; 10 bool operator < (const Point &rhs) const{ 11 return rad<rhs.rad; 12 } 13

【UVA - 10815】Andy&#39;s First Dictionary (set)

Andy's First Dictionary Description 不提英文了 直接上中文大意吧 XY学长刚刚立下了再不过CET就直播xx的flag,为了不真的开启直播模式,XY学长决定好好学习英语.于是他每天都读一篇只包含生词的英语文章,并以自己高达450的智商在一秒钟之内记忆下来. 现在给你一篇XY学长今天要读的文章,请你写一个程序,输出他都学习到了哪些单词.要求:如果文章中有相同的单词,那么仅仅输出一次:而且如果两个单词只有大小写不同,将他们视为相同的单词. Input 测试数据将输入

【UVa】12118 Inspector&#39;s Dilemma(欧拉道路)

题目 题目 ? ? 分析 很巧秒的一道题目,对着绿书瞎yy一会. 联一下必须要走的几条边,然后会形成几个联通分量,统计里面度数为奇数的点,最后再减去2再除以2.这样不断相加的和加上e再乘以t就是答案, 为什么呢?题目要求最短距离,那么必定是欧拉道路,那么为了构造出最短欧拉道路,要将奇度数的点减小至2个,然而各个道路不一定联通,还需要计算一下联通块数量n,结果加上n-1后,再乘t,因为需要n-1条边将各个联通块连接起来. 注意题目已保证每两个点都有路,所以上面才能那么肆无忌惮的连边. ? ? 代码

【原】AFNetworking源码阅读(四)

[原]AFNetworking源码阅读(四) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇还遗留了很多问题,包括AFURLSessionManagerTaskDelegate类所实现的NSURLSession相关的代理方法,甚至连dataTask.uploadTask.downloadTask这几个基本概念也没说.这一篇就是为了集中消灭这些遗留问题. 2. AFURLSessionManagerTaskDelegate的代理方法 此处实现的仍然是NSURLS

【原】FMDB源码阅读(二)

[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比如FMDB的executeUpdate:系列方法.数据库的加解密等等.这次写的就是对FMDatabase和FMResultSet这两个文件的补全内容.每次写这种补全的内容最头疼,内容会很分散,感觉没啥条理. 2. executeUpdate:系列函数 注意除了"SELECT"语句外,其他的

【开源】OSharp框架解说系列(3):扩展方法

〇.前言 扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异. 最常见的扩展方法是 LINQ 标准查询运算符,它将查询功能添加到现有的 System.Collections.IEnumerable 和 System.Collections.Generic.