Description

小松鼠开心地在树之间跳跃着,突然她停了下来。因为眼前出现了一个 拿着专克超萌小松鼠的法宝————超萌游戏机的游客!  超萌游戏机之所以拥有这个名字,是因为它的屏幕是一个n × 2的矩形。 小松鼠接过游戏机,开始了她的第一个游戏:俄罗斯方块。  考虑到小松鼠的智商,游戏机里的方块只有下面四种,方块按顺序下落,



可以在任意时刻(甚至是下落前)对其进行不限次数的旋转操作。

由于四种方块最小宽度都为2,因此下落的时候在水平方向上是不能够移 动的。我们称当前方块下落的过程完成了,当且仅当其再往下移动一个单 位就会与之前覆盖的方块有部分相重叠。小松鼠想要知道,在这个n×2的 游戏界面中,一共会出现多少种游戏状态。游戏状态指单次方块下落的过 程完成后,不要求游戏结束(即不要求第1行非空),且界面中出现的必须 是完整的方块。

两种游戏状态被认为是相同的,当且仅当游戏界面中的每一个格子两种 状态下被覆盖的方块类型都相同(或都不被覆盖)。

如下图是两种不同的游戏状态

   

再次考虑到小松鼠的智商,答案模109 + 7 输出。

Input

一行一个数n,表示游戏界面的长度。

Output

一个数,表示游戏界面的状态数在模109 + 7意义下的值。

Constraints

对于前10%,\(n <= 10。\)

对于前30%,\(n <= 1000。\)

对于前60%,\(n <= 100000。\)

对于100%, \(n <= 1000000。\)

Soluiton

大模拟递推

定义数组dp[N][6]

题目只有两列,所以所有的方块只有6种情况

dp[i][0~6]分别表示在第i种情况的方块落下后,第i行的方案数

结合代码理解一下很简单的

Code

#include<bits/stdc++.h>
#define il inline
#define rg register
#define lol long long
#define Min(a,b) (a)<(b)?(a):(b)
#define Max(a,b) (a)>(b)?(a):(b) using namespace std; const int N=1e6+10;
const int inf=2e9; lol ans;
int n;
lol dp[N][6];//0.左中 1.右中 2.上下 3.块 4.反L 5.倒L
const int mod=1e9+7; void in(int &ans)
{
ans=0; int f=1; char i=getchar();
while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();}
while(i>='0' && i<='9') ans=(ans<<1)+(ans<<3)+i-'0', i=getchar();
ans*=f;
} int main()
{
freopen("StopAllSounds.in","r",stdin);
freopen("StopAllSounds.out","w",stdout);
in(n);
if(n==1) {
cout<<1<<endl;
return 0;
}
if(n==2) {
cout<<2<<endl;
return 0;
}
for(int i=0;i<=5;i++) dp[3][i]=1;
dp[3][3]=0; dp[2][3]=1;
for(int i=4;i<=n;i++) {
dp[i][0]=(dp[i-3][0]+dp[i-2][1]+dp[i-2][2]+dp[i-3][3]+dp[i-2][4]+dp[i-3][5])%mod;
dp[i][1]=(dp[i-2][0]+dp[i-3][1]+dp[i-3][2]+dp[i-3][3]+dp[i-3][4]+dp[i-3][5])%mod;
dp[i][2]=(dp[i-3][0]+dp[i-2][1]+dp[i-2][2]+dp[i-3][3]+dp[i-2][4]+dp[i-3][5])%mod;
dp[i][3]=(dp[i-2][0]+dp[i-2][1]+dp[i-2][2]+dp[i-2][3]+dp[i-2][4]+dp[i-2][5])%mod;
dp[i][4]=(dp[i-3][0]+dp[i-3][1]+dp[i-3][2]+dp[i-3][3]+dp[i-3][4]+dp[i-3][5])%mod;
dp[i][5]=(dp[i-3][0]+dp[i-2][1]+dp[i-2][2]+dp[i-3][3]+dp[i-1][4]+dp[i-3][5])%mod;
}
for(int i=1;i<=n;i++)
for(int j=0;j<=5;j++)
(ans+=dp[i][j])%=mod;
cout<<ans+1<<endl;
return 0;
}

博主蒟蒻,随意转载.但必须附上原文链接

http://www.cnblogs.com/real-l/

[模拟赛] StopAllSounds的更多相关文章

  1. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  2. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  3. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  4. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  5. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  6. 小奇模拟赛9.13 by hzwer

    2015年9月13日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿(explo) [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞 ...

  7. PKUSC 模拟赛 day1 下午总结

    下午到了机房之后又困又饿,还要被强行摁着看英文题,简直差评 第一题是NOIP模拟赛的原题,随便模拟就好啦 本人模拟功力太渣不小心打错了个变量,居然调了40多分钟QAQ #include<cstd ...

  8. [GRYZ]寒假模拟赛

    写在前面 这是首次广饶一中的OIERS自编自导,自出自做(zuo)的模拟赛. 鉴于水平气压比较低,机(wei)智(suo)的WMY/XYD/HYXZC就上网FQ下海找了不少水(fei)题,经过他们优( ...

  9. BZOJ2741: 【FOTILE模拟赛】L

    2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1170  Solved: 303[Submit][Status] ...

随机推荐

  1. python循环,函数

    平常的网页会转换成ascll码,在转编译成十六进制a='http://www.mywebsit.com/?query=python&count=20'print(a)b=a.replace(' ...

  2. python3 练习题100例 (二十六)回文数判断

    题目内容: 给一个5位数,判断它是不是回文数,是则输出yes,不是则输出no. 例如12321是回文数,它的个位与万位相同,十位与千位相同. 输入格式: 共一行,为一个5位数. 输出格式: 共一行,y ...

  3. ruby 第三方模块unirest使用

    Creating Requests require 'unirest' response = Unirest.post 'http://httpbin.org/post', headers:{ Acc ...

  4. 【Leetcode】807. Max Increase to Keep City Skyline

    Description In a 2 dimensional array grid, each value grid[i][j] represents the height of a building ...

  5. 44- EF + Identity实现

    1-配置EF, 需要创建如下几个类 默认User主键为guid类型,现在改成int类型 namespace MvcCookieAuthSample.Models { public class Appl ...

  6. react ant-design自定义图标

    ant-design给我们提供的图标不够怎么办呢?答案是我们可以自定义图标. 自定义图标也挺简单的,现在图标推荐用svg格式,那么我们就需要制作svg图片. 下面让我们看看如果制作svg图片吧. 1. ...

  7. 教你Zbrush 4R7怎样创建Z球

    随着CG行业的迅猛发展,就业门槛大幅度提高,对于从业人员要求就是要“又快又好”,作为一个模型师,常会碰到一天或两天完成一个全身角色的考题,而且还需要角度摆出造型,以前做这个的话,可能比较难,现在有了Z ...

  8. C#的委托Delegate

    一.委托基础 1.什么是委托 委托(Delegate) 是存有对某个方法的引用的一种引用类型变量,用关键字delegate申明,实现相同返回值和参数的函数的动态调用,提供了对方法的抽象. 委托(Del ...

  9. P2678 跳石头(二分答案)

    P2678 跳石头 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间 ...

  10. IDLE激活方法

    激活流程 一.通过Activation code 方式激活, 注册码获取地址为:http://idea.lanyus.com/ 在idea或者pycharm的Activation code中输入 注册 ...