[题解] [JSOI2013] 游戏中的学问

题面

题解

这个数据范围, 直接 DP 一下就完了
看是这个人新开一个圈还是加到别的圈里去
注意, 新开一个圈最少需要三个人
设 \(f[i][j]\) 为前 \(i\) 个人组成 \(j\) 个圈的方案数
\[
f[i][j] =
\begin{cases}
f[i - 1][j] * (i - 1)\f[i - 3][j - 1] * (i - 1) * (i - 2)\\end{cases}
\]
没了

Code

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;

int n, k, mod, f[3005][3005]; 

template < typename T >
inline T read()
{
    T x = 0, w = 1; char c = getchar();
    while(c < '0' || c > '9') { if(c == '-') w = -1; c = getchar(); }
    while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
    return x * w;
}

int main()
{
    n = read <int> (), k = read <int> (), mod = read <int> ();
    if(n < 3) { puts("0"); return 0; }
    f[0][0] = 1;
    for(int i = 3; i <= n; i++)
    for(int j = 1; j <= min(i / 3, k); j++)
        f[i][j] = (1ll * (i - 1) * (i - 2) % mod * f[i - 3][j - 1] % mod + 1ll * f[i - 1][j] * (i - 1) % mod) % mod;
    printf("%d\n", f[n][k]);
    return 0;
}

原文地址:https://www.cnblogs.com/ztlztl/p/12289202.html

时间: 2024-10-02 06:37:20

[题解] [JSOI2013] 游戏中的学问的相关文章

Dota 游戏中的攻击与伤害分析

摘要:在上一篇文章中分析了物理攻击和护甲的攻防分析,但是忽略了英雄对战里面一个很重要的角色--技能攻击.实际上,除了少数后期英雄可以直接靠平砍(即物理攻击)杀人外,大部分英雄尤其是智力英雄还是要靠技能收割人头的.技能的使用也是评价一个玩家水平高低的主要指标.在本文中,我们就技能进行分析. 关键字:技能攻击 魔抗 护甲 伤害类型 攻击类型 Dota中的攻击类型共有普通攻击.穿刺攻击.攻城攻击.混乱攻击.英雄攻击和法术攻击6种.除了法术攻击,其他的统称为物理攻击.然而我们只考虑英雄的话,只有英雄攻击

全屏游戏中自动切出到桌面的问题解决(二)

关于全屏游戏,类似英雄联盟等,游戏中,自动切到桌面的问题,之前发布过一个解决过的问题.今天又碰到一个类似的问题,当然还是用前端进程工具查找一下什么进程引起的游戏切出.经过观察为update.exe这个进程导致.那么下面就需要查找这个文件的来源了.通过查找路径,发现此文件随机性特别强,任意变换目录,而且通过软件也看不出其父进程.如图:    那么只有借助其他软件了.打开 ProcessExplorer,观察所有进程,发现有UPDATE,但是也无法观察到父进程.那么结束掉这个进程,并且使用顺网小哥的

全屏游戏中自动切出到桌面的问题解决

近期遇到一个客户全屏游戏中,自动切出游戏到桌面的问题,于是到现场解决.     打开游戏<英雄联盟>测试,并开启前端进程监测软件监测.一段时间过后,游戏切出,发现一个名称为"DeskTopHelper.exe"的进程.如图: 好吧,那么看一看这个进程是哪个软件带的吧.打开PROCESS EXPLORER,查看一下,如图: 通过进程关系,并进一步查找文件目录得知,这个进程是"95网吧大师的进程".那么得知是哪个软件导致的,解决办法就不用再说了吧. 附上工具

游戏中的音效

1. 游戏中的即时音效: 在游戏中,根据情况播放的即时音效较为短暂.可以重复.也可以同时播放.由于Android中提供的MediaPlayer会占用大量的系统资源,而且播放时还会进行缓冲,有较大的延时,因此使用MediaPlayer无法实现即时音效的播放.而在Android中专门提供的SoundPool类主要用于管理和播放应用程序中的声音资源,使用该类时首先需要通过该类将声音资源加载到内存中,然后在需要的即时音效的地方播放即可,几乎没有延时现象.[由于SoundPool设计的初衷是用于无延时地播

漫谈游戏中的人工智能

写在前面   今天我们来谈一下游戏中的人工智能.当然,内容可能不仅仅限于游戏人工智能,还会扩展一些其他的话题. 游戏中的人工智能,其实还是算是游戏开发中有点挑战性的模块,说简单点呢,是状态机,说复杂点呢,是可以帮你打开新世界大门的一把钥匙.有时候看到知乎上一些可能还是前公司同事的同学的一些话,感觉还是挺哭笑不得的,比如这篇:http://zhi.hu/qu1h,吹捧机器学习这种玄学,对游戏开发嗤之以鼻.我只能说,技术不到家.Vision不够,这些想通过换工作可培养不来. 这篇文章其实我挺早就想写

C# Unity游戏开发——Excel中的数据是如何到游戏中的 (二)

本帖是延续的:C# Unity游戏开发——Excel中的数据是如何到游戏中的 (一) 上个帖子主要是讲了如何读取Excel,本帖主要是讲述读取的Excel数据是如何序列化成二进制的,考虑到现在在手游中应用很广泛的序列化技术Google的ProtoBuf,所以本文也是按照ProtoBuf的方式来操作的.ProtoBuf是一个开源库,简单来说ProtoBuf就是一个能使序列化的数据变得更小的类库,当然这里指的更小是相对的.好了ProtBuf的东西就不在多说,以后会专门写一篇帖子的.本帖其实就相当于上

游戏中的弹道学手册(转)

[1]直线单体必中飞弹 代表单位:<帝国时代1>的弓箭手,<海岛奇兵>的步兵 直线飞行,只会击中被攻击的单位,命中率100%.看起来飞弹会穿过一些单位,但其实只会击中被锁定为攻击目标的单位.如果飞弹在飞行的过程中目标单位已经被摧毁,则飞弹会继续飞行一段距离之后消失. 虽然理论上来说弓箭手的弹道应该是抛物线,但<帝国时代1>中的弓箭手是直线射击的,我们就不要对老游戏太苛求啦! [2]直线单体真实碰撞飞弹 代表单位:<合金弹头>的小手cc枪.H枪,绝大多数射击游

游戏中的技能数据结构

问题:游戏中上百个技能是如何储存的,如果调用的,不会是一起加载,if判断一个一个的吧? 回答: 蓝色的字体是我们游戏中的做法 主流的做法是通过 Add Buff 和DeBuff 来实现的,下面简单Buff的释放方式 最简单的Buff需要有如下通用属性: 1.生效时间->在添加到对象上后,作用的时间长度,一般有立即作用,延迟一段时间生效等等 2.作用时间->指该Buff在对象身上作用的时间,生效后立即完全,如普通攻击,还有持续作用的,如中毒后持续扣血,眩晕等等 3.作用对象->某些技能制定

silverlight开发游戏中的大坑

最初做<金X>使用silverlight是因为看了深蓝色的右手的silverlight游戏开发教程,这里赞一下,教程写的非常好!做游戏的基础思想均涵盖了,能够给游戏开发的新手提供很多思维方式上的引导. 但是在我个人开发.发布金X的过程中,陆续发现有一些silverlight的大坑,这里给大家分享一下,防止大家犯重复错误. 1.DateTime数据结构的处理 在游戏中,如果想使用DateTime数据结果来存时间的话,一定要慎用DateTime.ToString和DateTime.Parse方法.