「MYOI-R3」字符串
题目描述
给定字符串 s , t s,t s,t。
现在你要在 s , t s,t s,t 中删除一些字符并将它们重新排列使 s = t s=t s=t。
问操作后的 ∣ s ∣ |s| ∣s∣(即字符串 s s s 的长度)最大是多少?
输入格式
第一行一个字符串 s s s。
第二行一个字符串 t t t。
输出格式
一行一个整数,表示操作后的 ∣ s ∣ |s| ∣s∣ 的最大值。
样例 #1
样例输入 #1
abc
bc
样例输出 #1
2
样例 #2
样例输入 #2
aaaaa
bbbbb
样例输出 #2
0
提示说明
在第一个样例中,将 a
删除,留下 bc
。
此时 ∣ s ∣ = 2 |s|=2 ∣s∣=2,可以证明这是最优解。
在第二个样例中,将 aaaaa
删除,留下空串。
将 bbbbb
删除,留下空串。
此时 ∣ s ∣ = 0 |s|=0 ∣s∣=0,可以证明这是最优解。
本题采用捆绑测试。
记 n = max ( ∣ s ∣ , ∣ t ∣ ) n=\max(|s|,|t|) n=max(∣s∣,∣t∣)。
Subtask \text{Subtask} Subtask | $n\le $ | 特殊性质 | 总分值 |
---|---|---|---|
1 1 1 | 10 10 10 | 无 | 25 25 25 |
2 2 2 | 1 0 5 10^5 105 | A \text{A} A | 25 25 25 |
3 3 3 | 1 0 5 10^5 105 | B \text{B} B | 25 25 25 |
4 4 4 | 1 0 5 10^5 105 | 无 | 25 25 25 |
对于 100 % 100\% 100% 的数据, 1 ≤ ∣ s ∣ , ∣ t ∣ ≤ 1 0 5 1 \le |s|,|t| \le 10^5 1≤∣s∣,∣t∣≤105,字符串均由小写字母组成。
特殊性质 A \text{A} A: s s s 是一个 a ∼ z \text{a}\sim\text{z} a∼z 的排列。
特殊性质 B \text{B} B:保证 s i , t i ∈ { a , b } s_i,t_i\in\{\text{a},\text{b} \} si,ti∈{a,b}。
代码内容
// #include <iostream>
// #include <algorithm>
// #include <cstring>
// #include <stack>//栈
// #include <deque>//队列
// #include <queue>//堆/优先队列
// #include <map>//映射/* */
// #include <unordered_map>//哈希表
// #include <vector>//容器,存数组的数,表数组的长度
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=300;
ll a[N],b[N];
int main()
{
string s,t;
cin>>s>>t;
ll l=s.size();
for(ll i=0;i<l;i++)
a[s[i]]++;
for(ll i=0;i<t.size();i++)
b[t[i]]++;
ll ans=0;
for(ll i='a';i<='z';i++)
{
if(a[i]>=b[i])
ans+=a[i]-b[i];
}
cout<<l-ans<<endl;
return 0;
}