样例 #3 WA 求 Hack
查看原帖
样例 #3 WA 求 Hack
1268478
時空楼主2024/10/3 21:31

RT

#include <bits/stdc++.h>

#define FstIO ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define pb push_back
#define mem(a, v) memset(a, v, sizeof a)
#define pii pair<ll, ll>

using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
 
const ll N = 2e7, M = 80 + 5; 
const ll mod = 1e9 + 7, mod2 = 998244353;
const ld eps = 1e-6;

string s;

ll n, L[N];

ll Mp[10], f[N];

signed main()
{
//	freopen(".in", "r", stdin);
//	freopen(".out", "w", stdout);

	FstIO;

	cin >> s; 
	n = s.size(); s = ' ' + s;
	for (ll i = 1; i <= n; ++ i )
	{
//		if (i == 1) { L[1] = 1; continue; }
		ll l = L[i - 1];
		while (Mp[s[i] - '0'] > 0 && l < i - 1) -- Mp[s[l ++] - '0'];
		++ Mp[s[i] - '0'];
		if (l == L[i - 1]) L[i] = L[i - 1];
		else L[i] = l - 1;
	}
	
//	for (ll i = 1; i <= n; ++ i ) cout << L[i] << ' '; cout << '\n';
	
	f[0] = 1;
	for (ll i = 1; i <= n; ++ i ) 
	{
		for (ll j = i - 1; j >= L[i]; -- j ) 
		{
			f[i] = (f[i] + f[j]) % mod;
		}
	}
//	for (ll i = 1; i <= n; ++ i ) cout << f[i] << ' '; cout << '\n';
	
	cout << f[n] << '\n';
	
	return 0;
	
	cout.flush();
}
2024/10/3 21:31
加载中...