admin管理员组

文章数量:1574959

贪心

代码

//By AcerMo
#include<cmath>
#include<cstdio>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#define lli long long int
using namespace std;
const int M=1e6+50;
const int mod=1e9+7; 
lli f[M];
char s[M];
int n,m,e,last[30];
int main()
{
	scanf("%d%d",&n,&e);scanf("%s",s);m=strlen(s);
	for (int i=0;i<=m-1;i++)
	{
		lli now=0;
		for (int k=1;k<=e;k++)
			now=(now+f[k])%mod;
		f[s[i]-'a'+1]=(now+1)%mod;
		last[s[i]-'a'+1]=i+1;
	}
	for (int i=1;i<=n;i++)
	{
		lli now=0,mini=last[1];
		for (int k=1;k<=e;k++)
			now=(now+f[k])%mod;
		int poi=1;
		for (int k=2;k<=e;k++)
			if (last[k]<mini) mini=last[k],poi=k;
		f[poi]=(now+1)%mod;last[poi]=M+i;
	}
	lli now=0;
	for (int i=1;i<=e;i++)
		now=(now+f[i])%mod;
	cout<<(now+1)%mod;
	return 0;
}

 

本文标签: CF645EIntellectualInquiry