(土气的名字万里挑一丫丫)

然后这个题是个递推,lz的考场想法:

3个的最好确定,先把3个的确定下来,然后从这个点往前推,从这个点往后推这么算吧qwq

然后码长:也是很nice,最关键的是,我都写的这么复杂了,它居然还是没有ac掉,已经放弃修改这篇(85分代码,不会改了。挂出来求救)代码了qwq(欢迎大佬批评指正,全篇推翻也可以)。

然后题解solution:

首先我们先判断输入的数据是否合法,显然对于每个格子中的数字,只能是0~3之间的数,其它数只要出现就无解。

然后是计算雷,对于a[1]==0||a[1]==2的情况,我们都可以清楚的确定出雷的位置,对于a[1]==3的情况,显然是无解的,而对于a[1]==1的情况,我们需要分1 0和0 1两种情况讨论了。

定义一个int型数组f,表示雷的数量,因为我们有无解的情况,所以可能会出现f[i]<0||f[i]>1的情况,因此不可以开bool数组;

然后根据a[1]的值,先将f[1]f[2]判断出来(对于a[1]==1的情况我们先假定为其中的一种,如果这种情况无解,我们再判断另一种情况)

然后递推:

int dt(){for(int i=2;i<=n;i++){f[i+1]=a[i]-f[i-1]-f[i];if(f[i+1]<0||f[i+1]>1) return 0;}if(f[n+1]!=0) return 0;else return 1;
}

从i=2开始递推,推到i=n;

对于当前位置kk的地雷数,等于上一个位置kk-1的a(因为a数组表示的是本身,+1,-1的总地雷数)-上一个位置kk-1的地雷数-上上个位置kk-2的地雷数;

画个图感性理解一下:

然后当某个位置的雷>1或<0时,显然就炸了,直接进入无解情况。

然后这个递推,会推到f[n+1],显然如果f[n+1]!=0,也是无解的,因此最后记得判一下;

当a[1]==1并且我们算的第一种情况无解时,我们还需要判断一下第二种情况,所以需要再写一个特判。

CODE:

#include<bits/stdc++.h>using namespace std;inline int read(){int ans=0;char last=' ',ch=getchar();while(ch>'9'||ch<'0') last=ch,ch=getchar();while(ch<='9'&&ch>='0') ans=(ans<<1)+(ans<<3)+ch-'0',ch=getchar();if(last=='-') ans=-ans;return ans;
}int n,aa;
int a[10005],f[10005];int dt(){for(int i=2;i<=n;i++){f[i+1]=a[i]-f[i-1]-f[i];if(f[i+1]<0||f[i+1]>1) return 0;}if(f[n+1]!=0) return 0;else return 1;
}int main(){n=read();for(int i=1;i<=n;i++){a[i]=read();if(a[i]>3||a[i]<0) {printf("No answer");return 0;}}if(a[1]==3||a[n]==3) {printf("No answer");return 0;}if(a[1]==0){f[1]=f[2]=0;}if(a[1]==1){f[1]=1;f[2]=0;}if(a[1]==2){f[1]=f[2]=1;}aa=dt();if(aa==0&&a[1]==1){f[1]=0;f[2]=1;}aa=dt();if(aa==0) printf("No answer");else {for(int i=1;i<=n;i++)printf("%d ",f[i]);}return 0;
}

end-

转载于:https://www.cnblogs.com/zhuier-xquan/p/11158534.html

【7.9校内test】T1挖地雷相关推荐

  1. NOIP 2021 游记

    Day -8 得知初中生可以参加noip 得知自己被老师拉去noip 先是十分激动,然后是一脸惊恐 要是noip比csp还毒瘤怎么办,是不是直接自挂东南枝了 Day -7 去FZYZ参加了一次训练 老 ...

  2. 【第一届“文翁杯”现场竞技赛】(校内“欢乐”赛)T1—洗刷刷(dp)

    传送门 dpdpdp简单题,才不是因为我去打答案的表才没去想正解呢 考虑一个四维dpdpdp f[pos][i][j][k]f[pos][i][j][k]f[pos][i][j][k]表示当前处理到p ...

  3. 【6.18校内test】T1多项式输出

    日常题前废话: 首先so amazing 的一件事,因为在洛谷上立下了的flag,然后这次考试前两道题都是刚刚做过不久的题emmm(相当于白送200吗qwq,但是这阻挡不了我第三题不会的脚步qwq) ...

  4. 【NOIP校内模拟】T1 膜法(组合数)

    整理题意后 对于每个询问其实就是 由于C(m,n)=C(m,m-n) 就变成了 其实就是在杨辉三角上的一列求其中的一段和 然后有个玄学的公式 什么意思呢 证明是很容易得到的 所以把阶乘预处理出来 由于 ...

  5. 2017.6.11 校内模拟赛

    题面及数据及std(有本人的也有原来的) :2017.6.11 校内模拟赛 T1 自己在纸上模拟一下后就会发现 可以用栈来搞一搞事情 受了上次zsq 讲的双栈排序的启发.. 具体就是将原盘子大小cop ...

  6. 2019.6.18 校内测试 分析+题解

    话说校内怎么又考试了QwQ,哎考就考吧(随鸡硬便啦) 考试的三个题分别都再洛谷上: P1067 多项式输出  传送门 P1068 分数线划定  传送门 P1069 细胞分裂     传送门 呜呜呜~T ...

  7. test韩顺平校内网

    --create database xiaonei --drop database xiaonei --use xiaonei ------------------------------------ ...

  8. 校内集训11.1小结

    校内集训11.1小结 T1:腿部挂件 T2:走夜路 T3:宝石专家 前言:这次做了一套提高难度的题,总分反而比上次高了.这次考试除了第二题没想出单调栈有些可惜外,也没有什么遗憾了.为了增强本人的考场思 ...

  9. 蓝桥杯c语言校内选拔赛试题,2013年蓝桥杯校内选拔赛C语言B组.docx

    2013年蓝桥杯校内选拔赛C语言B组.docx 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水 ...

最新文章

  1. 以太坊和Metamask开发web应用时不再需要密码
  2. mount 网络_mount系统调用(ksys_mount-gt;do_mount-gt;do_new_mount)
  3. Java 必看的 Spring 知识汇总
  4. XSS攻击及解决方案
  5. 图像超分辨率进ASC19超算大赛,PyTorch+GAN受关注
  6. [AaronYang]C#人爱学不学[6]
  7. 数据库截取字段 转换成int型函数
  8. WINDOWS自带的压缩,解压工具命令
  9. CSDN搜索可以搜博客代码了
  10. linux tar文件夹打包不包含目录,tar打包如何不打包某一个文件夹(排除某些文件夹)...
  11. app inventor制作手机蓝牙遥控器
  12. 实验二 实现中点分割直线段裁剪算法
  13. java导出word纸张方向_java导出word的几种方式
  14. C语言:7-10 计算工资.2021-07-29
  15. 智慧工地-未来工地新形态
  16. 集合_java集合框架
  17. 利用百度地图sdk实现定位
  18. anaconda3最新安装教程
  19. 小白如何用苹果CMS打造一个电影网站?
  20. Adobe Media Encoder 2021 for Mac 专业的视频格式转码软件

热门文章

  1. fedora 14 64位安装 flash player
  2. 构建插件式的应用程序框架(一)----开篇
  3. SpringRMI解析3-RmiServiceExporter逻辑细节
  4. PHP将mysql数据导出为Excel
  5. 设置域用户登录主目录
  6. 几个与IP地址类型有关的术语
  7. LeetCode 5377. 将二进制表示减到 1 的步骤数
  8. virtual memory exhausted: Cannot allocate memory Linux虚拟内存不足,扩展虚拟内存的解决办法
  9. c# vscode 配置_用VS Code写C#
  10. Python中用户管理(用户的登陆、用户的增删改查)