bzoj1088: [SCOI2005]扫雷Mine
来源:互联网 发布:硕鼠mac版好用吗 编辑:程序博客网 时间:2024/06/07 09:13
题目传送门
哈哈哈我扫雷很强。
初级6秒中级35秒高级125秒。
欢迎来破。(我感觉还可以了)
言归正传。其实说我一眼就看出来怎么做了。
这是作为一个雷手的素质。。
首先,当我们确定了前两个格子后,那么我们根据第二个格子的数字就可以确定第三个格子是雷还是空地了。
然后根据第二个和第三个格子,又可以确定第四个格子是什么了。
那么前两个格子有多少种情况呢。
如果第一个数字为1。
那么表示前两个格子有一个格子是雷。
因为第一个数字是记录前两个格子的数量嘛。
所以就可以分为两种情况:
t[i]表示第i个格子是否为雷。
t[1]=0,t[2]=1;
t[1]=1,t[2]=0;
这样我们又能推出t[3],t[4]……
这道题不就做出来了嘛。
如果第一个数字为2
那么前两个格子都是雷,
所以t[1]=1,t[2]=1;
如果第一个数字为0
那么前两个格子都不是雷,
所以t[1]=0,t[2]=0;
代码实现:
#include<cstdio>#include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>using namespace std;int a[11000],t[11000];int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); if(a[1]>=3) { //如果第一个数字大于等于3的话那肯定无解 printf("0\n");return 0; } int ans=0; if(a[1]==2) { t[1]=1;t[2]=1; for(int i=2;i<=n;i++) { int x=a[i]-t[i]-t[i-1]; if(x<0||x>1) //我们确定了前两个格子后就能确定第三个格子了。 break; if(i==n) { if(x!=0) break; else ans++; } if(x==0) t[i+1]=0; if(x==1) t[i+1]=1; } printf("%d\n",ans);return 0; } if(a[1]==1) { t[1]=1;t[2]=0; for(int i=2;i<=n;i++) { int x=a[i]-t[i]-t[i-1]; if(x<0||x>1) break; if(i==n) { if(x!=0) break; else ans++; } if(x==0) t[i+1]=0; if(x==1) t[i+1]=1; } memset(t,0,sizeof(t)); t[1]=0;t[2]=1; for(int i=2;i<=n;i++) { int x=a[i]-t[i]-t[i-1]; if(x<0||x>1) break; if(i==n) { if(x!=0) break; else ans++; } if(x==0) t[i+1]=0; if(x==1) t[i+1]=1; } printf("%d\n",ans);return 0; } if(a[1]==0) { t[1]=0;t[2]=0; for(int i=2;i<=n;i++) { int x=a[i]-t[i]-t[i-1]; if(x<0||x>1) break; if(i==n) { if(x!=0) break; else ans++; } if(x==0) t[i+1]=0; if(x==1) t[i+1]=1; } printf("%d\n",ans);return 0; } return 0;}
水一发。。
阅读全文
1 0
- bzoj1088 [SCOI2005]扫雷Mine
- bzoj1088 [SCOI2005]扫雷Mine
- [BZOJ1088][SCOI2005]扫雷Mine
- BZOJ1088: [SCOI2005]扫雷Mine
- 【SCOI2005】【BZOJ1088】扫雷Mine
- bzoj1088[SCOI2005]扫雷Mine
- BZOJ1088: [SCOI2005]扫雷Mine
- bzoj1088[SCOI2005]扫雷Mine
- 【bzoj1088】 [SCOI2005]扫雷Mine
- [BZOJ1088][SCOI2005]扫雷Mine
- bzoj1088: [SCOI2005]扫雷Mine
- 【bzoj1088】[SCOI2005] 扫雷Mine
- 【bzoj1088】[SCOI2005]扫雷Mine
- [BZOJ1088][SCOI2005]扫雷Mine
- bzoj1088: [SCOI2005]扫雷Mine
- [bzoj1088][SCOI2005]扫雷Mine
- [bzoj1088][SCOI2005]扫雷Mine
- bzoj1088 [SCOI2005]扫雷Mine
- 技术文章 | 6倍性能差100TB容量_阿里云POLARDB如何实现?
- Linux 常用命令
- python 处理 txt 文档数据
- LK光流算法
- 三种从sql server数据库里拿数据的方法
- bzoj1088: [SCOI2005]扫雷Mine
- ESXI开启snmp
- 笨方法学python习题45(对象、类以及从属关系)
- [bzoj1433][二分图匹配]假期的宿舍
- 欢迎使用CSDN-markdown编辑器
- BZOJ1370: [Baltic2003]Gang团伙
- iOS开发-iPhoneX的适配-iPhoneX屏幕适配分享
- Generating Sequences With Recurrent Neural Networks(1)
- Remove Linked List Elements