Luogu P2327 [SCOI2005]扫雷
题目传送门
思路
这道题是一道典型的 DP 题。
状态: 表示前 个格子中,第 个雷的情况为 ,第 个雷的情况为 。
那状态转移方程呢?
原先的数组直接设成 好了,
真实的雷的情况设成 。
考虑连续三个数 。
当 时:
当 时:
当 时:
当 时:
这样,就可以很轻松的写出状态转移方程来了。
代码
#include <bits/stdc++.h>
using namespace std;
int f[10005][2][2];
int a[10005];
int main() {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a[i]);
}
f[0][0][0] = f[0][0][1] = 1;
for (int i = 1; i <= n; i++) {
if (a[i] == 0) {
f[i][0][0] += f[i - 1][0][0];
}
if (a[i] == 1) {
f[i][0][0] += f[i - 1][1][0];
f[i][1][0] += f[i - 1][0][1];
f[i][0][1] += f[i - 1][0][0];
}
if (a[i] == 2) {
f[i][0][1] += f[i - 1][1][0];
f[i][1][0] += f[i - 1][1][1];
f[i][1][1] += f[i - 1][0][1];
}
if (a[i] == 3) {
f[i][1][1] += f[i - 1][1][1];
}
}
printf("%d", f[n][0][0] + f[n][1][0]);
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!