FZU2126:消除类游戏(DP)

Problem Description

S近期在玩一种游戏。

这样的游戏的规则是一个一个地往一个栈里放有颜色的球,当栈顶连续k个球颜色同样时。这k个球立马同一时候消失。

如今S已经往栈里放了n个球,他想知道再放m个球,然后使得栈里的球都被消去的放法有多少种。两种放法不同是指存在放的第i个球这两种放法放的球的颜色不同。因为方法数可能非常多,将答案mod 1000000007。

 Input

输入包括多组数据。输入数据的第一行为四个整数n,m,h,k(0<=n,m,h<=1000,2<=k<=1000),表示已经放了n个球,有h种不同颜色的球,若栈顶出现连续k个球颜色同样则这k个球同一时候消失,问再放m个球。使得最后栈里的球都被消去的放法数。

第二行从左往右依次输入n个整数,范围为1到h,表示刚開始往栈里放的球的颜色,放入顺序与输入顺序同样,数据保证已经放入的n个球不会存在连续k个球颜色同样。答案对1000000007取余。

 Output

输出一行一个整数M,表示对1000000007取余后的放法数。

 Sample Input

3 6 3 3 1 2 20 6 2 3

 Sample Output

98

dp[i][j]代表还须要放i个球,还有j个球须要消去的情况

#include<stdio.h>
#include<algorithm>
#include<string.h>
using namespace std;
const int mod = 1000000007;
int n,m,h,k;
int cur,pre,tot;
long long dp[1005][1005];
int main()
{
    int i,j;
    while(~scanf("%d%d%d%d",&n,&m,&h,&k))
    {
        memset(dp,0,sizeof(dp));
        pre = cur = tot = 0;
        for(i = 0; i<n; i++)
        {
            scanf("%d",&cur);
            if(cur != pre)//不等于前面,还须要k-1个球才干消去
                tot+=k-1;
            else//来一个相等的就减去1
                tot--;
            pre = cur;
        }
        dp[m][tot] = 1;//直接按如今所存在的数字消去的方法仅仅有一种
        for(i = m; i>0; i--)
        {
            for(j = i; j>=0; j--)
            {
                if(i-1>=j+k-1)//假设末尾放一个与栈末尾的求不同的球,那么对应的情况要多加k-1个球
                    dp[i-1][j+k-1] = (dp[i-1][j+k-1]+dp[i][j]*(j?(h-1):h))%mod;
                if(j-1<0)
                    break;
                dp[i-1][j-1] = (dp[i-1][j-1]+dp[i][j])%mod;//依据前面能够知道,我在末尾放一个与栈尾同样的球,那么我还须要放的个数必定是减去1的
            }
        }
        printf("%lld\n",dp[0][0]);
    }

    return 0;
}

版权声明:本文博客原创文章。博客,未经同意,不得转载。

时间: 2024-08-01 00:35:01

FZU2126:消除类游戏(DP)的相关文章

用cocos2d-html5做的消除类游戏《英雄爱消除》——概述

在bbs.html5china.com论坛学习了MV和老马的小熊蘑菇后我也自己模仿他们做了这样子一个游戏,权当技术交流学习,现在附上游戏截图和源码. 游戏截图: 1.系统菜单界面: 2.游戏界面 3.游戏结束界面: 4.游戏设置页面 这是一款休闲型的游戏,移动方块,相同的方块在一起就会消除,计算消除整个屏幕方块所需要画的时间,时间越短成绩越好.下面附上源码链接: http://files.cnblogs.com/jackyWHJ/HeroLikeClear.zip 接下来会把几个主要功能写个教程

用cocos2d-html5做的消除类游戏《英雄爱消除》(3)——游戏主界面

游戏主界面,同时也是主程序,包括sprite的生成加入以及游戏状态的控制. 下面同样贴下源码再讲解; /** * Power by html5中文网(html5china.com) * author: jackyWHJ */ var STATE_PLAYING = 0; var STATE_GAMEOVER = 1; var g_sharedGameLayer; var GameLayer = cc.Layer.extend({ _time:0, _timeLabel:null, _timeSt

用cocos2d-html5做的消除类游戏《英雄爱消除》(2)——Block设计实现

Block可以说是这个游戏的核心类,它除了包含自身的一些属性和方法外还添加了对触摸事件的响应. 我们先来看下源码吧 /** * Power by html5中文网(html5china.com) * author: jackyWHJ */ var Block = cc.Sprite.extend({ id:0, name:"", active:true, pointX:0, pointY:0, beginPoint:null, flash:false, ctor:function (a

用cocos2d-html5做的消除类游戏《英雄爱消除》(4)——游戏结束

游戏结束界面: 在前面几个教程中,这个界面的创作所需要的知识点基本我们都讲过了,这里就说下用户数据的缓存吧,也是先来看下源码 /** * Power by html5中文网(html5china.com) * author: jackyWHJ */ var GameOver = cc.Layer.extend({ init:function () { var bRet = false; if (this._super()) { var sp = cc.Sprite.create(s_b05);

用cocos2d-html5做的消除类游戏《英雄爱消除》(1)——系统主菜单

系统主菜单如下图所示: 首先,介绍下这个主菜单,它包含了一个动画logo以及一个按钮选项,动画logo每隔1秒钟切换一张图片,点击相应的按钮选项会切换不同的游戏场景. 下面看下这个界面的源码: /** * Power by html5中文网(html5china.com) * author: jackyWHJ */ cc.dumpConfig(); var winSize; var SysMenu = cc.Layer.extend({ _hero:null, _logo:null, _logo

ios实战-消除类游戏Dots

使用原生的ios UIKit实现简单的消除类游戏,还没完全完成,不大想继续做了,所以写个博客大家分享下: 先上源码:http://git.oschina.net/jonear/LianLianDots -----------------------------------------又是凌乱的分割线----------------------------------------------------- 主要是分享下这个游戏的结构设计吧,整体还是很简单的: Manager: LLDGameMan

201512-2 消除类游戏 (水题,暴力)

问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除.当有多处可以被消除时,这些地方的棋子将同时被消除. 现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘. 请注意:一个棋子可能在某一行和某一列同时被消除. 输入格式 输入的第一行包含两个整数n, m,用空格分隔,分别表示棋盘的行数和列数. 接下来n行,每行m个

CCF - 201512-2 - 消除类游戏

问题描述 试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有连续三个或更多的相同颜色的棋子时,这些棋子都被消除.当有多处可以被消除时,这些地方的棋子将同时被消除. 现在给你一个n行m列的棋盘,棋盘中的每一个方格上有一个棋子,请给出经过一次消除后的棋盘. 请注意:一个棋子可能在某一行

消除类游戏(js版)

原文:消除类游戏(js版) 最近一直在玩一款消灭星星的消除类游戏,周末无聊就用js也写了一遍,感觉玩比写还困难一直玩不到10000分.废话不多说直接上源码. 效果图(ps 页面有点难看木有美工) 代码总共456行,未经过严格测试 1 <html lang="zh-CN"> 2 <head> 3 <meta charset="utf-8"> 4 <meta http-equiv="X-UA-Compatible&qu