AT_dp_t 简单前缀和优化 dp WA 求调
  • 板块学术版
  • 楼主LolaPeppa
  • 当前回复10
  • 已保存回复10
  • 发布时间2024/8/22 14:02
  • 上次更新2024/8/22 15:53:52
查看原帖
AT_dp_t 简单前缀和优化 dp WA 求调
1314900
LolaPeppa楼主2024/8/22 14:02

前缀和优化 dp,WA*12,求调,谢谢\kel

#include <iostream>
#include <cstdio>
using namespace std;
typedef long long ll;
const ll MOD = 1e9+7;
int n;
char s[3010];
ll f[3010][3010], a[3010];
template <typename T> inline void read(T &x) {
    int f = 1; x = 0; char s = getchar();
    while (s < '0' || s > '9') { if (s == '-') f = -1; s = getchar(); }
    while (s <= '9' && s >= '0') x = x * 10 + (s ^ 48), s = getchar();
    x *= f;
}
int main() {
	cin >> n >> (s+1);
	for (int i = 1; i <= n; i ++ ) {
	    f[1][i] = 1;
	    a[i] = (a[i - 1] + f[1][i]) % MOD;
	}
	for (int i = 2; i <= n; i ++ ) {
		for (int j = 1; j <= n; j ++ ) {
		    if (s[i - 1] == '<') f[i][j] = (f[i][j] + a[j - 1]) % MOD;
		    else f[i][j] = (f[i][j] + a[n] - a[j]) % MOD;
		}
		for (int j = 1; j <= n; j ++ ) a[j] = (a[j - 1] + f[i][j]) % MOD;
	}
	ll ans = 0;
	for (int i = 1; i <= n; i ++ ) ans = (ans + f[n][i]) % MOD;
	printf("%lld\n", ans);
	return 0;
}

捞一下,原贴:https://www.luogu.com.cn/discuss/903600

2024/8/22 14:02
加载中...