10月3日,在杭州市西湖景区,一只小松鼠不停地接受一道道食物,花生、
玉米、饼干,可谓来者不拒,憨态可掬的模样吸引了众多围观者...
Description  
 小松鼠开心地在树之间跳跃着,突然她停了下来。因为眼前出现了一个
拿着专克超萌小松鼠的法宝————超萌游戏机的游客!
 超萌游戏机之所以拥有这个名字,是因为它的屏幕是一个n × 2的矩形。
小松鼠接过游戏机,开始了她的第一个游戏:俄罗斯方块。
 考虑到小松鼠的智商,游戏机里的方块只有下面四种,方块按顺序下落,

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


 两种游戏状态被认为是相同的,当且仅当游戏界面中的每一个格子两种
状态下被覆盖的方块类型都相同(或都不被覆盖) 。
 如下图属于两种不同的游戏状态
 再次考虑到小松鼠的智商,答案模10 9 + 7 输出。
Input  
 一行一个数n,表示游戏界面的长度。
Output  
 一个数,表示游戏界面的状态数在模10 9 + 7意义下的值。
Constraints  
 对于前10%,n <= 10。
 对于前30%,n <= 1000。
 对于前60%,n <= 100000。
 对于100%,n <= 1000000。
 人生不能失去信仰,数据有梯度。

f[i][0]表示第i行2列都满了

f[i][1]表示第i行第1列为空

f[i][2]表示第i行第2列为空

f[i][3]表示第i,i-1行第一列都为空

f[i][4]表示第i,i-1行第二列都为空

f[i][5]表示第i行为空

记住:方块只能旋转,未填满也算方案

 #include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long f[][];
int n;
int Mod=;
int main()
{int i,j;
cin>>n;
f[][]=;
for (i=;i<=n;i++)
{
if (i>=)
f[i][]+=f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][];
f[i][]%=Mod;
if (i>=)
f[i][]+=f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][],
f[i][]+=f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][];
f[i][]%=Mod;
f[i][]%=Mod;
if (i>=)
f[i][]+=f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][];
// f[i][2]+=f[i-2][2]+f[i-2][4]+f[i-3][0]+f[i-3][1]+f[i-3][3];
f[i][]%=Mod;f[i][]%=Mod;
if (i>=)
f[i][]+=f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][],
//f[i][4]+=f[i-3][0]+f[i-3][1]+f[i-3][2]+f[i-3][3]+f[i-3][4],
f[i][]+=f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][];
f[i][]=f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][]+f[i-][];
f[i][]%=Mod;f[i][]%=Mod;f[i][]%=Mod;f[i][]%=Mod;
}
//cout<<f[4][5]<<endl;
//printf("%d %d %d %d %d\n",f[n][5],f[n][4],f[n][3],f[n][2],f[n][1],f[n][0]);
cout<<((f[n][]+f[n][])%Mod+(f[n][]+f[n][])%Mod+(f[n][]+f[n][])%Mod)%Mod;
}

StopAllSounds的更多相关文章

  1. [模拟赛] StopAllSounds

    Description 小松鼠开心地在树之间跳跃着,突然她停了下来.因为眼前出现了一个 拿着专克超萌小松鼠的法宝----超萌游戏机的游客! 超萌游戏机之所以拥有这个名字,是因为它的屏幕是一个n × 2 ...

  2. DBus学习笔记

    摘要:DBus作为一个轻量级的IPC被越来越多的平台接受,在MeeGo中DBus也是主要的进程间通信方式,这个笔记将从基本概念开始记录笔者学习DBus的过程 [1] DBus学习笔记一:DBus学习的 ...

  3. 游戏编程模式 Game Programming Patterns (Robert Nystrom 著)

    第1篇 概述 第1章 架构,性能和游戏 (已看) 第2篇 再探设计模式 第2章 命令模式 (已看) 第3章 享元模式 (已看) 第4章 观察者模式 (已看) 第5章 原型模式 (已看) 第6章 单例模 ...

  4. NOIP2016 “西湖边超萌小松鼠” 模拟赛

    总的来说,这套题的难度比较接近近些年来Day1的真实难度,认为非常值得一打 GotoAndPlay 题目大意 询问这个图上是否存在一种跳法,能跳到这个图上的每一个点 题目解析 犯了个低级错误,双向边忘 ...

  5. [翻译] SoundManager 音频管理器

    SoundManager 音频管理器 https://github.com/nicklockwood/SoundManager Purpose SoundManager is a simple cla ...

  6. FLASH动作脚本详解

    FLASH动作脚本详解 一.FLASH脚本基础入门讲解 二.按钮AS的编写 三.影片剪辑的AS编写 四.动态文本框 五.影片剪辑的拖拽 六.流程控制与循环语句 七.绘图及颜色的AS的编写 八.声音 A ...

  7. flash代码

    Flash常用的动作命令一.Flash中的常用命令:1.在当前帧停止播放 on(release){ stop();} 2.从当前帧开始播放 on(release){ play();} 3.跳到第 10 ...

  8. 16_游戏编程模式ServiceLocator 服务定位

    ####简单说,就是某个系统作为一个服务,对全局系统可见. Service Locator (服务定位) ``` //简单粗暴的代码, 使用声音系统 // Use a static class? Au ...

  9. flash逆向练习:以逆向的方式通关flash游戏《谈判专家》

    一.缘起 无聊想玩搜个游戏玩,看到一个帖子引起了我的好奇: 但是作者分享的游戏链接已经挂掉了,于是就搜索了一下: 选了7k7k上的一个在线玩,链接:http://www.7k7k.com/swf/15 ...

随机推荐

  1. 1013团队Beta冲刺day3

    项目进展 李明皇 今天解决的进度 完善了程序的运行逻辑(消息提示框等) 明天安排 前后端联动调试 林翔 今天解决的进度 向微信官方申请登录验证session以维护登录态 明天安排 继续完成维护登录态 ...

  2. 201621123060《JAVA程序设计》第一周学习总结

    1.本周学习总结 1.讲述了JAVA的发展史,关于JDK.JRE.JVM的联系和区别 2.JDK是用JAVA开发工具.做项目的关键.JRE是JAVA的运行环境(JAVA也是JAVA语言开发的).JVM ...

  3. 雷云Razer Synapse2.0使用测评 -第二次作业

    雷蛇云驱动Razer Synapse2.0使用测评 雷蛇(Razer)是全球顶级游戏设备品牌之一,1998年由CEO Min-Liang Tan和Robert "Razerguy" ...

  4. Python 单向循环链表

    操作 is_empty() 判断链表是否为空 length() 返回链表的长度 travel() 遍历 add(item) 在头部添加一个节点 append(item) 在尾部添加一个节点 inser ...

  5. swift 编写欢迎界面-- ios开发

    转载自:http://blog.csdn.net/u014455765/article/details/49622947 现在很多iOS开发人员都从oc转向Swift, swift 也必将成为ios开 ...

  6. 多线程socket UDP收发数据

    多线程socket收发数据 from threading import Thread from socket import * def sendData(): while True: sendInfo ...

  7. scrapy crawl xmlfeed spider

    from scrapy.spiders import XMLFeedSpider from myxml.items import MyxmlItem class XmlspiderSpider(XML ...

  8. const volatile同时限定一个类型int a = 10

    const和volatile放在一起的意义在于: (1)本程序段中不能对a作修改,任何修改都是非法的,或者至少是粗心,编译器应该报错,防止这种粗心: (2)另一个程序段则完全有可能修改,因此编译器最好 ...

  9. Linux环境下发布.net core

    一.安装Linux环境 1. 安装VM虚拟机和操作系统 VM虚拟工具安装的过程详见:http://blog.csdn.net/stpeace/article/details/78598333.直接按照 ...

  10. ll的命令后面的字段详解

    linux学习 命令ll后字段的解释 分类:linux | 标签: 命令ll后字段的解释  2010-10-25 15:47阅读(4513)评论(0) ls -l 列表信息详解 我们平时用ls -l ...