码迷,mamicode.com
首页 > 其他好文 > 详细

CodeForces 518B Tanya and Postcard (题意,水题)

时间:2016-07-07 06:08:13      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

题意:给定两个字符串,然后从第二个中找和第一个相同的,如果大小写相同,那么就是YAY,如果大小写不同,那就是WHOOPS。YAY要尽量多,其次WHOOPS也要尽量多。

析:这个题并不难,难在读题懂题意。首先把两个字符串的的每个字符存起来,然后,先扫一遍,把所有的能YAY的都选出来,剩下的再尽量先WHOOPS

代码如下:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <set>
#include <cstring>
#include <cmath>
#include <map>
#include <cctype>

using namespace std;
const int maxn = 1000 + 5;
map<char, int> mp1;
map<char, int> mp2;
string s1, s2;

int main(){
    cin >> s1 >> s2;
    for(int i = 0; i < s1.size(); ++i)
        ++mp1[s1[i]];
    for(int i = 0; i < s2.size(); ++i)
        ++mp2[s2[i]];

    int cnt1 = 0, cnt2 = 0;
    for(int i = 0; i < 26; ++i){
        if(mp1[i+‘a‘] >= mp2[i+‘a‘]){
            cnt1 += mp2[i+‘a‘];
            mp1[i+‘a‘] -= mp2[i+‘a‘];
            mp2[i+‘a‘] = 0;
        }else{
            cnt1 += mp1[i+‘a‘];
            mp2[i+‘a‘] -= mp1[i+‘a‘];
            mp1[i+‘a‘] = 0;
        }
        if(mp1[i+‘A‘] >= mp2[i+‘A‘]){
            cnt1 += mp2[i+‘A‘];
            mp1[i+‘A‘] -= mp2[i+‘A‘];
            mp2[i+‘A‘] = 0;
        }else{
            cnt1 += mp1[i+‘A‘];
            mp2[i+‘A‘] -= mp1[i+‘A‘];
            mp1[i+‘A‘] = 0;
        }
    }
    for(int i = 0; i < 26; ++i){
        if(mp1[i+‘a‘])  cnt2 += min(mp1[i+‘a‘], mp2[i+‘A‘]);
        if(mp1[i+‘A‘])  cnt2 += min(mp1[i+‘A‘], mp2[i+‘a‘]);
    }
    printf("%d %d\n", cnt1, cnt2);
    return 0;
}

 

CodeForces 518B Tanya and Postcard (题意,水题)

标签:

原文地址:http://www.cnblogs.com/dwtfukgv/p/5648574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!