BZOJ1088(SCOI2005)
2024-08-31 22:57:19
枚举第一行第一个格子的状态(有雷或者无雷,0或1),然后根据第一个格子推出后面所有格子的状态。推出之后判断解是否可行即可。
#include <bits/stdc++.h> using namespace std; #define REP(i,n) for(int i(0); i < (n); ++i)
#define rep(i,a,b) for(int i(a); i <= (b); ++i)
#define dec(i,a,b) for(int i(a); i >= (b); --i)
#define for_edge(i,x) for(int i = H[x]; i; i = X[i]) #define LL long long
#define ULL unsigned long long
#define MP make_pair
#define PB push_back
#define FI first
#define SE second
#define INF 1 << 30 const int N = 100000 + 10;
const int M = 10000 + 10;
const int Q = 1000 + 10;
const int A = 30 + 1; int a[N], b[N];
int n;
int ans; int main(){
#ifndef ONLINE_JUDGE
freopen("test.txt", "r", stdin);
freopen("test.out", "w", stdout);
#endif scanf("%d", &n);
rep(i, 1, n) scanf("%d", a + i);
rep(i, 0, 1){
bool flag = true;
b[1] = i;
rep(j, 2, n) b[j] = a[j - 1] - b[j - 1] - b[j - 2];
rep(j, 2, n - 1) if (b[j] < 0 || b[j] > 1){ flag = false; break;}
if (b[n] < 0 || b[n] > 1) flag = false;
rep(j, 1, n) if (b[j - 1] + b[j] + b[j + 1] != a[j]){ flag = false; break;}
//rep(j, 1, n) printf("%d ", b[j]); putchar(10); if (flag) ++ans;
} printf("%d\n", ans); return 0; }
最新文章
- C++模板实例化
- symfony2取得web目录绝对路径、相对路径、网址的函数是什么
- 准备使用 Office 365 中国版--安装
- Goldbach&#39;s Conjecture
- PHP集成支付宝快速实现充值功能
- 【hihoCoder第十五周】最近公共祖先&#183;二
- HDU 5724 - Chess
- 合理的使用size_t可以提高程序的可移植性和代码的可读性,让你的程序更高效。
- SpringMVC、SpringMVC XML配置(纯XML方式)
- C++不支持Unicode,即使utf8
- 深度解析javascript中的浅复制和深复制
- 动态链接库dll,导入库lib,静态链接库lib
- 张高兴的 Windows 10 IoT 开发笔记:使用 Lightning 中的软件 PWM 驱动 RGB LED
- Spring框架-AOP详细学习[转载]
- Nginx Redirect Websocket
- Docker Builders:Builder pattern vs. Multi-stage builds in Docker
- C# 创建 写入 读取 excel
- cpu的核心数及线程关系
- canvas知识点积累
- 关闭WPS启动时显示的在线模板