题意:
是你有
统计个数按照最小的那个就行。
AC代码:
const int N = 1e5 + 10;
int n, m;
string s, t;
int a[1000], b[1000];
int ans, res, cnt, tmp, num;
int main()
{
cin >> s;
sd(n);
cin >> t;
int len1 = s.size();
int len2 = t.size();
ans = inf;
rep(i, 0, len1 - 1)
{
if ((s[i] >= 'A' && s[i] <= 'Z' && s[i + 1] >= 'A' && s[i + 1] <= 'Z') || (i == len1 - 1))
{
a[s[i] - 'A']++;
}
num = s[i] - 'A';
if (s[i] >= 'A' && s[i] <= 'Z' && s[i + 1] >= '0' && s[i + 1] <= '9')
{
int x = 0;
for (i++; s[i] >= '0' && s[i] <= '9'; i++)
x = x * 10 + s[i] - '0';
a[num] += x;
i--;
}
}
rep(i, 0, len2 - 1)
{
if ((t[i] >= 'A' && t[i] <= 'Z' && t[i + 1] >= 'A' && t[i + 1] <= 'Z') || (i == len2 - 1))
{
b[t[i] - 'A']++;
}
num = t[i] - 'A';
if (t[i] >= 'A' && t[i] <= 'Z' && t[i + 1] >= '0' && t[i + 1] <= '9')
{
int x = 0;
for (i++; t[i] >= '0' && t[i] <= '9'; i++)
x = x * 10 + t[i] - '0';
b[num] += x;
i--;
}
}
rep(i, 0, 30)
{
if (b[i] && !a[i])
{
puts("0");
return 0;
}
if (a[i] && b[i])
{
if (ans > a[i] * n / b[i])
ans = a[i] * n / b[i];
}
}
pd(ans);
return 0;
}