首页 > 其他分享 >传话游戏

传话游戏

时间:2023-10-17 22:35:47浏览次数:13  
标签:游戏 int 交换 long 单词 maxn 传话

传话游戏

思路

分析题目后不难发现,对于一个单词只可以和前后进行交换。

问题变为:有 \(n\) 个单词只可以前后交换问,每个单词至多交换一次,求最后的单词序列种数。

设 \(f[i][0/1/3]\) 为前 \(i\) 个单词,\(0\):与前面的单词交换的方案数,\(1\):不交换的方案数,\(3\):该单词操作后的种类总数。

由于与后面的单词交换可以看做后面的单词与前面交换,故不考虑。(实际上状态也不允许这么做)

当 \(s[i]==s[i-1]\) 时:

\[f[i][0]=f[i-2][3]\\ f[i][1]=f[i-1][3]\\ f[i][3]=f[i][1] \]

当 \(s[i]\neq[i-1]\) 时:

\[f[i][0]=f[i-2][3]\\ f[i][1]=f[i-1][3]\\ f[i][3]=f[i][0]+f[i][1] \]

发现方程其实只需要求 \(f[i][3]\),遂演变为:

当 \(s[i]==s[i-1]\) 时:

\[f[i]=f[i-1] \]

当 \(s[i]\neq[i-1]\) 时:

\[f[i]=f[i-1]+f[i-2] \]

特别的 \(f[0]=f[1]=1\)。

CODE

#include<bits/stdc++.h>
using namespace std;

#define mod 1000000007
#define int long long

const int maxn=1e5+5;

int n;
int f[maxn];

string s[maxn];

signed main()
{
    scanf("%lld",&n);
    for(int i=1;i<=n;i++) cin>>s[i];

    f[1]=1;
    if(s[2]==s[1]) f[2]=1;
    else f[2]=2;
    for(int i=3;i<=n;i++)
    {
        if(s[i]==s[i-1]) f[i]=f[i-1];
        else f[i]=(f[i-1]+f[i-2])%mod;
    }

    printf("%lld",f[n]%mod);
}

标签:游戏,int,交换,long,单词,maxn,传话
From: https://www.cnblogs.com/binbinbjl/p/17770870.html

相关文章

  • Unity3D学习记录01:URP渲染管线以及3D游戏场景设置
    以下内容所使用的版本均为Unity2022.3先在Window->PackageManager->UnityRegistry里面搜索添加UniversalRP Unity中,创建渲染管线的方式为Asset文件夹下右键Create->Readering->URPAsset(withUniversalAsset)会创建以下两个Pipeline: 接着在图中的设置里添加这两个渲......
  • 《巴小特的宝藏》一款小游戏的诞生笔记
    起源:《巴小特的宝藏》项目初创与2022年初,拥有多年游戏开发经验的我萌生自己创作游戏的念头,市场上好多游戏同质化严重,并且基本主要考虑的都是娱乐性,而我想做一款不一样的东西出来,当时很痴迷研究经济、金融,自己也炒股,该赔的钱也都赔,正好也赶上了2022年股市大跌,没有在跌......
  • 数字游戏学习对学生数学学习自我效能感、动机、焦虑和成绩的影响
    (Effectsofdigitalgame-basedlearningonstudents’selfefficacy,motivation,anxiety,andachievementsinlearningmathematics) BeijingNormalUniversity2014一、摘要研究目的:本研究在电子书上开发了一个基于数学游戏的学习环境,帮助儿童减少数学焦虑,提高数学学......
  • 手把手教你开发一个类似羊了个羊的游戏
    羊了个羊游戏从本质上来说是一个消除类的游戏,与其它消除类游戏不同的是,羊了个羊是一个立体的消除游戏,它将待消除的方块分布排列在多个不同的层内,只有所有层内的方块都消除了才能过关。有人说它的玩法与《3Tiles》极为类似,但这种玩法并不是最早的,最早将方块分布排列在多个层内......
  • Bazzite:专为 Steam Deck 和 PC 上的 Linux 游戏打造的发行版
    导读对于一个专为 Linux 游戏定制的发行版,你是否感兴趣呢?如果答案是肯定的,那么我们为你准备了绝佳选择。Bazzite是一个新推出的基于Fedora的发行版,它是为 Linux桌面上的游戏,以及越来越火热的 SteamDeck 定制的。在此文章中,我们将对Bazzite进行简短总结,并探讨......
  • [CSP-S 2022] 策略游戏
    [CSP-S2022]策略游戏题目传送门题目分析本文中A和B分别代表小L和小Q,而原题中的$A$,$B$两个数组在本题中分别用$a$和$b$表示。矩阵这个描述就是障眼法。翻译一下题目:A在$a[l_1\cdotsr_1]$中选择一个$x$,然后B在$b[l_2\cdotsr_2]$中选择一个$y$,分数......
  • 下载的PC游戏启动后报错:无法加载 DLL“steam_api64”: 动态链接库(DLL)初始化例程失败
    无法加载DLL“steam_api64”:动态链接库(DLL)初始化例程失败。(异常来自HRESU解决方式:将文件夹拷贝到Steam-->steamapps文件夹下面还好是忍者神龟抛了个异常,才找到了问题所在,论抛异常的重要性!!!忍者神龟如龙......
  • 通过Python模拟报数游戏:计算最后留下的人
    题目要求计算在n个人报数中最后留下的那个人,规则是从1开始报数,每报到m的人退出,剩下的人继续从1开始报数。我们可以使用Python编写一个模拟游戏的代码来实现。解决方案:我们可以使用列表来表示这n个人,并使用一个循环来模拟报数的过程,直到只剩下一个人。具体而言,我们需要创建一个长度......
  • 2023APA招新游戏代码讲解
    0概况招新小游戏是使用C++与Python设计的几款小游戏,并使用Pyside2设计GUI界面。对于萌新们来说,短时间学会游戏开发并不是很实际,本文旨在让大家简单体会游戏的开发过程,如何设计框架、调用模块、编写游戏以及实现代码封装,并不要求大家看完就能完全理解并具备开发游戏的能力。我们......
  • 【算法】游戏中的学习,使用c#面向对象特性控制游戏角色移动
    最近,小悦的生活像是一首繁忙的交响曲,每天忙得团团转,虽然她的日程安排得满满当当,但她并未感到充实。相反,她很少有时间陪伴家人,这让她感到有些遗憾。在周五的午后,小悦的哥哥突然打来电话,他的声音里充满了焦虑。“小悦,我有个事情想拜托你。”哥哥的声音传来。小悦不禁有些疑惑,哥哥......