【7.9校内test】T1挖地雷
(土气的名字万里挑一丫丫)
然后这个题是个递推,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=;i<=n;i++){
f[i+]=a[i]-f[i-]-f[i];
if(f[i+]<||f[i+]>) return ;
}
if(f[n+]!=0) return ;
else return ;
}
从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=;
char last=' ',ch=getchar();
while(ch>''||ch<'') last=ch,ch=getchar();
while(ch<=''&&ch>='') ans=(ans<<)+(ans<<)+ch-'',ch=getchar();
if(last=='-') ans=-ans;
return ans;
} int n,aa;
int a[],f[]; int dt(){
for(int i=;i<=n;i++){
f[i+]=a[i]-f[i-]-f[i];
if(f[i+]<||f[i+]>) return ;
}
if(f[n+]!=) return ;
else return ;
} int main(){
n=read();
for(int i=;i<=n;i++){
a[i]=read();
if(a[i]>||a[i]<) {
printf("No answer");
return ;
}
} if(a[]==||a[n]==) {
printf("No answer");
return ;
}
if(a[]==){
f[]=f[]=;
}
if(a[]==){
f[]=;f[]=;
}
if(a[]==){
f[]=f[]=;
} aa=dt(); if(aa==&&a[]==){
f[]=;f[]=;
}
aa=dt();
if(aa==) printf("No answer");
else {
for(int i=;i<=n;i++)
printf("%d ",f[i]);
}
return ;
}
end-
【7.9校内test】T1挖地雷的更多相关文章
- 2019.7.9 校内测试 T1挖地雷
这一次是交流测试?边交流边测试(滑稽 挖地雷 这个题是一个递推问题. 首先我们看第一个格子,因为它只影响了它的上面和右上面这两个地方是否有雷. 我们可以分3种情况讨论: 1. 第一个格子的数字是2: ...
- 18清明校内测试T1
消失的数字(number) Time Limit:1000ms Memory Limit:128MB 题目描述 rsy拥有n个数,这n个数分别是a1,a2,…,an. 后来出现了一个熊孩子zhw, ...
- 2019.6.28 校内测试 T1 Jelly的难题1
这题面有点难理解,建议直接跳到题意解释那一部分(虽然我觉得解释的不大对,但按照解释来做确实能AC): 按照“题意解释”的思路来思考这个题,那么就十分的简单了: 1.首先要读入这个字符矩阵,可以用cin ...
- MY TESTS
励志整理所有的n次考试的博客: [五一qbxt]test1 [五一qbxt]test2 [校内test]桶哥的问题 [6.10校内test] noip模拟 6.12校内test [6.12校内test ...
- 【7.24校内交流赛】T1&T2
T1: 一个脑洞很大的题,将输入的所有数异或起来输出就好了: (话说我为什么这么喜欢用异或啊) #include<bits/stdc++.h> using namespace std; i ...
- 【7.10校内test】T1高级打字机
[题目链接luogu] 这是T1,但是是神仙T1: 对于前100%的数据很好写,直接数组模拟就可以了: (当然也有栈模拟的,据说有模拟炸了的) //50pts#include<bits/stdc ...
- 【6.24校内test】T1 江城唱晚
[题目背景] 墙角那株海棠,是你种下的思念. 生死不能忘,高烛照容颜. 一曲江城唱晚,重忆当年坐灯前, 青衫中绣着你留下的线. ——银临<江城唱晚> [问题描述] 扶苏是个喜欢一边听古风歌 ...
- 【6.12校内test】T1单词序列
[问题描述] 给出两个单词(开始单词和结束单词)以及一个词典.找出从开始单词转换到结束单词, 所需要的最短转换序列.转换的规则如下: 1.每次只能改变一个字母 2.转换过程中出现的单词(除开始单词和结 ...
- 【6.18校内test】T1多项式输出
日常题前废话: 首先so amazing 的一件事,因为在洛谷上立下了的flag,然后这次考试前两道题都是刚刚做过不久的题emmm(相当于白送200吗qwq,但是这阻挡不了我第三题不会的脚步qwq) ...
随机推荐
- QT:QSS字体设置
css,qss font-family常用的黑体宋体等字体中英文对照 当qss使用中文设置字体时,无法生效.因为qss不支持中文设置字体,所以下面给出一些常用的黑体宋体字体中英文对照. 微软雅黑: M ...
- 51 Nod 1134 最长递增子序列(经典问题回顾)
1134 最长递增子序列 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元 ...
- 第三天·HTML常用标签
一·<h1>-<h6> 单词缩写:headHTML的<h1>-<h6>代表了六个等级的标题,其中<h1>标签比较重要,因此要尽量少用.一般& ...
- ZooKeeper java例子解读
转载链接:https://blog.csdn.net/liyiming2017/article/details/83276706 需求理解我们先回顾一下例子的需求,此客户端有如下四个需求: 1.它接收 ...
- python3笔记二:进制转换与原码反码补码
一:学习内容 进制:二进制.八进制.十进制.十六进制 进制转换 原码.反码.补码 二:进制 二进制 1.二进制:只有0和1,逢2进1 2.举例:0+0=0.0+1=1.1+1=10 3.过程剖析:二进 ...
- 函数-this
1.this. 解析器在调用函数的时候,每次都会向函数内部传递进一个隐含的参数(即this): this指向一个对象,这个对象称为函数执行的上下文对象.根据函数的调用方式的不同,this会指向不同的对 ...
- “fatal error: hdf5.h: 没有那个文件或目录”解决方法
問題一: Installing Caffe without CUDA: fatal error: cublas_v2.h No such file: 在Makefile.config中修改,將CPU_ ...
- ImportError: cannot import name 'Document'
一种常见的原因是,程序文件的名字不对. 程序文件的名字不能和 import lib 里的名字冲突. 一个例子: 如果程序文件名字是 docx.py,程序又 from docx import Docum ...
- web安全之如何防止CSRF跨站请求伪造(转载)
https://www.cnblogs.com/blibli/p/7658168.html CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click ...
- leetcode 297二叉树的序列化与反序列化
to_string(x) 将数字x转化为string atoi(x) 将char转化为int stoi(x) 将string 转化为int 采用中序遍历的顺序存储,NULL用#表示,以,分隔,O(n) ...