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) 收藏 举报
浙公网安备 33010602011771号