求条,悬一关
查看原帖
求条,悬一关
983555
fengzhaoyu楼主2024/7/26 16:11

样例过了。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e6+100,mod=1e9+7;
int dp[N],last[N];
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		memset(dp,0,sizeof dp);
		memset(last,0,sizeof last);
		char s[N];
		cin>>s+1;
		int len=strlen(s+1);
		for(int i=1;i<=len;i++)
		{
			if(!last[s[i]])
			{
				dp[i]=dp[i-1]*2+1;
			}
			else
			{
				dp[i]=dp[i-1]*2-dp[last[s[i]]-1];
			}
			last[s[i]]=i;
			dp[i]=(dp[i]+mod)%mod;
		}
		cout<<dp[len]+1<<endl;
	}
	return 0;
 } 
2024/7/26 16:11
加载中...