为什么本地运行正常,交上去就TLE了
  • 板块学术版
  • 楼主SunSkydp
  • 当前回复12
  • 已保存回复12
  • 发布时间2023/8/17 11:01
  • 上次更新2023/11/3 03:12:24
查看原帖
为什么本地运行正常,交上去就TLE了
375241
SunSkydp楼主2023/8/17 11:01

样例过了,把一个数据下载下来本地运行可过(500ms),为什么交上去就T了?

#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll v[105], vv[105][35], f[105][35][35][20], c[40][40];
ll ans;
const int mod = 998244353;
int calc(int n) {
	for(int i = 0; i <= n; i++) c[i][0] = 1;
	for(int i = 1; i <= n; i++) {
		for(int j = 1; j <= i; j++) c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;
	}
}
int main() {
	calc(30);
	int n, m, kk;
	scanf("%d %d %d", &n, &m, &kk);
	for(int i = 0; i <= m; i++) {
		scanf("%lld", &v[i]);
		vv[i][0] = 1;
		for(int j = 1; j <= n; j++) vv[i][j] = vv[i][j - 1] * v[i] % mod;
	}
	f[0][0][0][0] = 1;
	for(int i = 0; i <= m; i++) {
		for(int j = 0; j <= n; j++) {
			for(int k = 0; k <= kk; k++) {
				for(int p = 0; p <= j >> 1; p++) {
					for(int t = 0; t <= n - j; t++) {
						f[i + 1][j + t][k + (t + p & 1)][t + p >> 1] = (f[i + 1][j + t][k + (t + p & 1)][t + p >> 1] + f[i][j][k][p] * vv[i][t] % mod * c[n - j][t] % mod) % mod;
					}
				}
			}
		}
	}
						
	for(int k = 0; k <= kk; k++) for(int p = 0; p <= n >> 1; p++) {
		if(k + __builtin_popcount(p) <= kk) ans = (ans + f[m + 1][n][k][p]) % mod;
	}
	cout << ans << endl;
	return 0;
}
2023/8/17 11:01
加载中...