站外题求助 WA 80pts
  • 板块题目总版
  • 楼主jimmy0926
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/6/23 15:19
  • 上次更新2024/6/23 17:57:35
查看原帖
站外题求助 WA 80pts
1162093
jimmy0926楼主2024/6/23 15:19

题目描述

《魔方大厦》是描述来克因魔方打乱后拼不回去,将魔方怒而掷地,魔方却突然变大,好奇的来克便进入到魔方世界里的一个故事。 C6H8O6 看了这部诡异的动画片后,晚上做梦也来到了魔方大厦中,魔方大厦是一个 n×n×nn \times n \times n 的三维立方体,总共由 n3n^3 个小立方体组成,每个立方体是一个“有趣”的国家。C6H8O6 在这些国家里开始了一系列神奇的历险。 所有小立方体按照坐标 (xi,yi,zi)(x_i,y_i,z_i) 的字典序编号 11 至 n3n^3 ,第 ii 个立方体国家的惊悚程度是 fif_i 。C6H8O6 希望在魔法大厦里展开一次惊悚旅行。 在每个小立方体上,C6H8O6 只能前往相邻且更加惊悚的小立方体。即设 C6H8O6 当前处在的小立方体是 ii 号,他能够前往的立方体 jj 需要满足的条件是: 1. ∣xi−xj∣+∣yi−yj∣+∣zi−zj∣=1|x_i-x_j|+|y_i-y_j|+|z_i-z_j|=1 ; 2. fi<fjf_i < f_j 。 C6H8O6 可以任选起点展开旅行,求旅行的方案总数对 pp 取模的余数。只要经过小立方体的编号和顺序存在区别,就认为两种方案是不同的。

输入格式

从标准输入读入数据。 第一行输入一个正整数 nn (n≤200)(n \le 200 )。 第二行输入 n3n^3 个正整数 ( ),表示编号为 的立方体的惊悚程度。 第三行输入一个正整数 fif_i ( fi≤109f_i \le 10^9 )。 ## 输出格式 输出到标准输出。 输出一个整数,代表方案总数对 pp 取模的余数。

样例1输入

2 1 2 3 4 5 6 7 8 99

样例1输出

38

样例1解释

以 11 至 88 号小立方体为起点的旅行方案数目分别为 16,5,5,2,5,2,2,116,5,5,2,5,2,2,1 。

最后贴个呆码

//算法:搜索
//时间复杂度:θ(n^3)
//空间复杂度:θ(n^3)
#include <bits/stdc++.h>
#define endl "\n"
#define uns unsigned
using namespace std;
int n, f[201][201][201], p, tp[201][201][201];
uns ans;
const int dx[] = {-1, 1, 0, 0, 0, 0};
const int dy[] = {0, 0, -1, 1, 0, 0};
const int dz[] = {0, 0, 0, 0, -1, 1};
int dfs(int, int, int);

int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	cin >> n;
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			for (int k = 1; k <= n; k++) {
				cin >> f[i][j][k];
			}
		}
	}
	cin >> p;

	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			for (int k = 1; k <= n; k++) {
				(ans += dfs(i, j, k)) %= p;
			}
		}
	}

	cout << ans;

	return 0;
}

int dfs(int x, int y, int z)
{
	if (tp[x][y][z]) {
		return tp[x][y][z];
	}

	int tot = 1;
	for (int i = 0; i < 6; i++) {
		int nx = x + dx[i], ny = y + dy[i], nz = z + dz[i];
		if (nx < 1 || nx > n || ny < 1 || ny > n || nz < 1 || nz > n) {
			continue;
		}
		if (f[x][y][z] >= f[nx][ny][nz]) {
			continue;
		}
		tot += dfs(nx, ny, nz);
	}
	return tp[x][y][z] = tot;
}

求大佬 QwQQwQ OrzOrz

2024/6/23 15:19
加载中...