洛谷 P2327 [SCOI2005] 扫雷
来源:互联网 发布:sql server pdf下载 编辑:程序博客网 时间:2024/06/05 19:58
题目描述
输入输出格式
输入格式:
第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)
输出格式:
一个数,即第一列中雷的摆放方案数。
输入输出样例
输入样例#1:
2
1 1
输出样例#1:
2
【分析】
看错了数据范围…评测机也不提示RE,于是我的AC率就被这道题卡没了。
设l[i]表示第i行是否有雷,a[i]表示第i行题目给出的雷数,则有递推式
l[i]=a[i-1]-l[i-1]-l[i-2]。
根据题意可发现最多只有两种可能,即l[1]的值分别为0和1,于是把l[1]先后赋值为0和1进行递推,若在递推过程中发现l[i]不为0或1则这种情况不合法。
注意最后要判断a[n]是否等于l[n]+l[n-1],否则会被hank一个点。
【代码】
//P2327 [SCOI2005] 扫雷#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#define fo(i,j,k) for(i=j;i<=k;i++)using namespace std;int a[10005],l[10005],n;inline bool ditui(int x){ int i,j; l[1]=x; fo(i,2,n) { l[i]=a[i-1]-l[i-1]-l[i-2]; if(l[i]<0 || l[i]>1) return 0; } if(l[n]+l[n-1]!=a[n]) return 0; return 1;}int main(){ int cnt=0,i,j; scanf("%d",&n); fo(i,1,n) scanf("%d",&a[i]); if(ditui(0)) cnt++; if(ditui(1)) cnt++; printf("%d\n",cnt); return 0;}
1 0
- 洛谷 P2327 [SCOI2005] 扫雷
- 洛谷 P2327 [SCOI2005] 扫雷
- [P2327] [SCOI2005]扫雷
- P2327 [SCOI2005]扫雷
- P2327 [SCOI2005]扫雷
- 扫雷 洛谷p2327
- 【SCOI2005】扫雷
- [scoi2005]扫雷
- 【SCOI2005】扫雷
- [SCOI2005]扫雷
- [SCOI2005]扫雷
- [SCOI2005]扫雷Mine
- 扫雷【SCOI2005一试】
- bzoj1088 [SCOI2005]扫雷Mine
- bzoj1088 [SCOI2005]扫雷Mine
- [BZOJ1088][SCOI2005]扫雷Mine
- BZOJ1088: [SCOI2005]扫雷Mine
- 【SCOI2005】【BZOJ1088】扫雷Mine
- HDU2066-一个人的旅行(Dijkstra算法+Floyd算法)
- nginx学习(五)——nginx的配置系统1
- 第一行代码酷欧天气开发(五)
- centos 6.5 git服务器的搭建
- 华为笔试题
- 洛谷 P2327 [SCOI2005] 扫雷
- Android 6.0 运行时权限管理最佳实践
- [经验之谈]数据库查询速度优化之解决技巧
- Dimen适配工具
- 简单的Flask工作流程
- swift爬虫
- java8--面向对象 下(疯狂java讲义3) 复习笔记
- thinking in java test chapter8(13)~(17)
- 文章标题