codeforces#239_div2_B Garland 简单模拟

题目地址:戳这里

题目大意;剪成花环,可以cut 但是不能粘贴--那么最多的方案就是,对每一种具体的颜色,第一字符串中出现的次数和第二个字符串中出现的次数取较小值。

先以为not obliged to 是不应该....  最后发现是不必须,,,,  注释flag那掉一行就行了

代码:

#include<iostream>
#include<string>
#include<map>
using namespace std;

int min(int a,int b)
{
    return a<b?a:b;
}
int main()
{
    map<char,int> map_a,map_b;
    
    string a,b;
    cin>>a>>b;
    
    for(int i=0;i<a.length();i++)
        map_a[a[i]]++;
    
    for(int i=0;i<b.length();i++)
        map_b[b[i]]++;
    
    
    map<char,int> ::iterator it,it1;
    
    bool ok=1;
    
//    for(it=map_a.begin();it!=map_a.end();it++)
//    {
//        if(it->second>1) {
//            ok=1;
//            break;
//        }
//    }
//    
   
    bool flag=0;
    
    int ans=0;
    
    for(it=map_b.begin();it!=map_b.end();it++)
    {
        it1=map_a.find(it->first);
        if(it1==map_a.end())
        {
            ok=0;
            break;
        }
        else
        {
            if(it1->second>1)  flag=1;
            ans+=min(it->second,it1->second);
            
        }
    }
    
    //if(!flag)  ok=0;
    
    if(!ok)
    {
        cout<<-1<<endl;
        
    }
    
    else  cout<<ans<<endl;
    
    
        
        return 0;
    
}


posted on 2014-03-31 23:34  814jingqi的ACM  阅读(126)  评论(0)    收藏  举报