题意

一个游戏,键盘上有 p p个键,每一局你可以按0≤x≤p0\le x \le p个键,
你可以在任意一局停下。每一局中,如果按正好 b b个键,则此局得分为上一局得分+1,否则得分与上一局相同。同时,每一局的得分多余kk时,只得 k k分。
询问得到正好ss分的不同方案数。

题解

按对 b b个键为CbpC_{p}^{b}种方法,按不对为 2p−Cbp 2^p-C_{p}^{b}种方法
状态表示f(当前得分,总分)
转移很好写
重点是,一定要将小循环放在外面,开数组时小的数字开在前面。否则可能会TLE

代码

/// by ztx/**
* b keys in need to get point of current level -> need   -> m
* p keys in the key board                      -> size   -> n
* k is the max point one can get in one level  -> limit  -> lim
* s is the target point                        -> target -> tar
* assuming the first level is always successfully passed !!!
*/#include <cstdio>#define  maxn  100096LL
#define  maxp  512LL
#define  mod   1000000007LL
#define  Inv(x)  pow(x,mod-2)int m, n, lim, tar, ans, X, Y, A;
int f[maxp][maxn] = {0};int pow(int x,int p) {int ret = 1;for ( ; p > 0; p >>= 1, x = 1LL*x*x%mod)if (p & 1) ret = 1LL*x*ret%mod;return ret;
}int C(int n,int m) {int fz, fm, i;for (fz = fm = i = 1; i <= m; i ++ )fz = 1LL*fz*(n-m+i)%mod, fm = 1LL*fm*i%mod;return 1LL*fz*Inv(fm)%mod;
}int main() {int i, j;scanf("%d%d%d%d", &m, &n, &lim, &tar);A = pow(2,n), X = C(n,m); if (Y = A-X, Y < 0) Y += mod;ans = 0;f[1][1] = X;if (lim > 500) lim = 500;/// Putting the smaller loop in outer layer can reduce the time by half (from 1996ms to 1122ms)/// w t ffor (j = 1; j <= lim; j ++ ) for (i = 1; i < tar; i ++ ) if (f[j][i]) {if (i+j<=tar && j==lim) f[j][i+j] = (f[j][i+j]+1LL*f[j][i]*A)%mod;if (i+j<=tar && j<lim) f[j][i+j] = (f[j][i+j]+1LL*f[j][i]*Y)%mod;if (i+j+1<=tar && j<lim) f[j+1][i+j+1] = (f[j+1][i+j+1]+1LL*f[j][i]*X)%mod;}for (i = 1; i <= lim; i ++ ) ans = (ans + f[i][tar]) % mod;printf("%d\n", ans);return 0;
}

[CF Gym 100372E] Sergey’s game相关推荐

  1. CF Gym 100227 I题 题解

    这场Gym全名是这个:2013-2014 CT S01E01: Extended 2000 ACM-ICPC East Central North America Regional Contest ( ...

  2. Caravan Robbers CF Gym - 100134C

    https://cn.vjudge.net/problem/Gym-100134C http://codeforces.com/gym/100134/attachments 答案就是最小的min(bi ...

  3. CF Gym 100187E Two Labyrinths (迷宫问题)

    题意:问两个迷宫是否存在公共最短路. 题解:两个反向bfs建立层次图,一遍正向bfs寻找公共最短路 #include<cstdio> #include<cstring> #in ...

  4. CF Gym 101630 B Box

    题目的意思大概就是给一个长方体的长宽高,问他能不能用一个w*h的纸剪出来,就是说展开图的长宽能不能比给定的小. 题目给了11中展开图的拓扑结构,我觉得这个很关键,要是题目没有给这个我可能想不到那么全面 ...

  5. CF GYM 100703G Game of numbers

    题意:给n个数,一开始基数为0,用这n个数依次对基数做加法或减法,使基数不超过k且不小于0,输出最远能运算到的数字个数,输出策略. 解法:dp.dp[i][j]表示做完第i个数字的运算后结果为j的可能 ...

  6. 【CF gym 103260】40th Petrozavodsk Programming Camp, Day 5,2021.2.3 水题2题

    M.Discrete Logarithm is a Joke 题意: 思路: 不难想到an=g^{an+1},因为样例给了 a[1000000]的值,所以反着推就行了. 记得开int128,longl ...

  7. cf Gym 101086M ACPC Headquarters : AASTMT (Stairway to Heaven)

    题目: Description standard input/output As most of you know, the Arab Academy for Science and Technolo ...

  8. CF Gym 100685A Ariel

    传送门 A. Ariel time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  9. cf gym 102785

    日常训练系列~ 本人在成功的过了三题后完美摸鱼 然后 然后终榜上就真的只过了三题 哭唧唧 传送门 a.A lazy controller:签到题,给n组数据,每组数据有a b两个数构成,如果b不是a的 ...

  10. cf gym/103821 (Aleppo + HAIST + SVU + Private) CPC 2022

    A   Laser Tag 题解:可以发现,我们此时的操作是将一段区间(不含端点)假如有数的话,就将其整体删除并在左右端点处加上1,根据我们学习的数据结构,其中有一个比较符合这种操作:珂朵莉树,也叫老 ...

最新文章

  1. python2.0正式发布时间_终于来了!!Pyston v2.0 发布,解决 Python 慢速的救星
  2. 浅谈JavaScript错误
  3. JAVA中使用FTPClient实现文件上传下载
  4. php gd 缩略图,[PHP GD库]①0--缩略图封装
  5. 黑马程序员——11 正则表达式
  6. Assigning to Classes CodeForces - 1300B
  7. ServerSuperIO Designer IDE 发布,打造物联网通讯大脑,随心而联。附:C#驱动源代码。
  8. JAVA 捕获异常所遇BUG
  9. BZOJ2017[USACO 2009 Nov Silver 1.A Coin Game]——DP+博弈论
  10. [IDL入门] 两个PPT,IDL上手
  11. 全新Java高级工程师学习路线图(附学习资料)
  12. BeanUtils.copyProperties设置忽略null字段
  13. Microsemi Libero使用技巧5——使用FlashPro生成stp程序文件
  14. 用计算机用图解法求理论塔板数,简洁法计算理论板数工具
  15. android系统版本下载6,安卓6.1系统下载 安卓android6.1官方版下载地址
  16. APISpace 银行卡四要素API
  17. mysql评论回复表设计_数据库设计——评论回复功能
  18. 非线性微分方程线性化
  19. Day03 开始学Response
  20. 0xFEFEFEFE 处有未经处理的异常(在xx中): 0xC00001A5: 检测到无效的异常处理程序例程。

热门文章

  1. 西门子S7-200PLC和昆仑通泰MCGS触摸屏控制步进伺服
  2. Java项目:ssm超市管理系统
  3. PMP考试 过程管理计划与过程分析的区别和联系
  4. 二叉树的三种遍历以及根据中序外加其他序确定唯一一颗二叉树
  5. 最后期限——BOSS工程项目的管理(转)
  6. 河南中原工学院计算机专业录取分数线,2018年中原工学院艺术类本科专业录取分数线...
  7. Bottom Sheets(底部动作条)使用介绍
  8. linux jx2410.tar.gz,Linux2.4.18核心移植到s3c2410全过程
  9. Open Live Writer已停止工作的解决办法
  10. 2017年1月1日 App Store中的所有应用都必须启用 App Transport Security安全功能