zoukankan      html  css  js  c++  java
  • [SCOI2005]扫雷

    Description

      相信大家都玩过扫雷的游戏。那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来。万圣节到了
    ,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字
    表示和它8连通的格子里面雷的数目。现在棋盘是n×2的,第一列里面某些格子是雷,而第二列没有雷,如下图:
    由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放
    方案。

    Input

      第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)

    Solution

    发现,第二列的一个数只能影响上面的三个格子。比较容易写出dp。

    f[i][0/1][0/1]表示,填完了第i个,第i个和第i-1个有没有雷的方案书。

    转移的时候,要看第二列的i,i+1,i+2三个数来判断i+1位置放雷或者不放雷合不合法了。

    但是,这个题可以脑洞更大!!!!

    发现,如果第一列第一个位置有没有雷是确定的,那么就可以知道整个第一列有没有雷了!

    因为,第一个位置有雷的话,根据第二列第一个数字,就可以知道第二个位置有没有雷,进而可以一路确定下去!!!

    所以,我们可以枚举第一个位置有没有雷,做两遍,如果合法,就是一种方案。

    所以也可以证明,答案只有0,1,2三种。

    这个题目脑洞还是很大的。

    代码略。

  • 相关阅读:
    cookie+session,会话时间设定
    input中id和name属性的区别。
    框架和设计模式的区别
    Java数字格式化输出时前面补0
    DDL_数据库模式定义语言
    7.JAVA_SE复习(文件)
    (python)数据结构---集合
    (python)数据结构---字典
    (python)数据结构---字符串
    (python)排序算法
  • 原文地址:https://www.cnblogs.com/Miracevin/p/9583432.html
Copyright © 2011-2022 走看看