【官方题解】子序列
2024-12-10 17:30:03
发布于:浙江
9阅读
0回复
0点赞
【题目大意】
给你个仅有大写字母组成的字符串 ,你可以将里面的字符重新排序使得子序列AYNU
出现的次数最多,并且将AYNU
出现的次数对 求余后输出。
Subtask 1: 100%
【算法分析】
本题考查子序列。
对于整个字符串 如果想让子序列AYNU
出现的次数最多那么只能将所有的 放在所有的 之前,所有的 放在所有的 之前,所有的 放在所有的 之前。
而实际我们只需要统计字母 出现的次数将他们相乘取余即可。
时间复杂度 O(n) 。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[30],n,m,mod=1e9+7;
string s;
int main(){
cin>>n>>s;
for (int i=0;i<n;i++){
a[s[i]-'A']++;
}
cout<<a['A'-'A']*a['Y'-'A']%mod*a['N'-'A']%mod*a['U'-'A']%mod;
}
这里空空如也
有帮助,赞一个