zoukankan      html  css  js  c++  java
  • CodeForces 518B Tanya and Postcard (题意,水题)

    题意:给定两个字符串,然后从第二个中找和第一个相同的,如果大小写相同,那么就是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
    ", cnt1, cnt2);
        return 0;
    }
    
  • 相关阅读:
    ArcGIS添加鹰眼
    C#设计模式--工厂方法
    C#设计模式--简单工厂
    C# 单例模式(转)
    事务的 原子性、一致性、隔离性、持久性
    asp.net 常用的3中身份验证
    angular localStorage使用方法
    angular.js升序降序过滤器
    ionic中$ionicPopover和$ionicModal
    ionic的弹出框$ionicPopover
  • 原文地址:https://www.cnblogs.com/dwtfukgv/p/5648574.html
Copyright © 2011-2022 走看看