U328298 求题目代码解释不懂f[i][j] 表示什么
  • 板块灌水区
  • 楼主Chtholly__Nota
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/11/10 17:03
  • 上次更新2024/11/10 19:51:01
查看原帖
U328298 求题目代码解释不懂f[i][j] 表示什么
847559
Chtholly__Nota楼主2024/11/10 17:03
代码是这样的
#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/hash_policy.hpp>
#include<ext/pb_ds/trie_policy.hpp>
#include<ext/pb_ds/priority_queue.hpp>
#include<ext/rope>
#define pn putchar('\n')
#define ps putchar(' ')
using namespace __gnu_cxx;
using namespace __gnu_pbds;
using namespace std;
typedef long long ll;
template <typename T> void re(T &t) {
	t=0;
	char ch=getchar();
	int f=1;
	while (ch<'0'||ch>'9') {
		if (ch=='-') f=-1;
		ch=getchar();
	}
	do {
		(t*=10)+=ch-'0';
		ch=getchar();
	} while ('0'<=ch&&ch<='9');
	t*=f;
}

inline void wr(int x) {
	if(x<0) x=-x;
	if(x>9) wr(x/10);
	putchar(x%10+'0');
}

const long long MOD = 1000000007;
ll f[2100][2100];

int n,s,t;

int main(){
	re(n);re(s);re(t);
	f[1][1] = 1;
	for (int i = 2; i <= n; i++)
		for (int j = 1; j <= n; j++)
			if ((i == s) || (i == t)){
				f[i][j] += f[i - 1][j - 1] + f[i - 1][j];
				f[i][j] %= MOD;
			}
			else{
				f[i][j] += f[i - 1][j + 1] * j;
				f[i][j] %= MOD;
				int num = 0;
				if (i > s)
					num++;
				if (i > t)
					num++;
				f[i][j] += f[i - 1][j - 1] * (j - num);
				f[i][j] %= MOD;
			}
	wr(f[n][1]);
	return 0;
}
2024/11/10 17:03
加载中...