只需要关心是否开枪,上个人和当前这个人的位置关系,转移可以前缀和优化

为了不重复,始终认为第一个就是1,最后答案乘以n

#include<bits/stdc++.h>
using namespace std;
#define rep(i, j, k) for (int i = int(j); i <= int(k); ++ i)
#define dwn(i, j, k) for (int i = int(j); i >= int(k); -- i)
typedef long long LL;
const LL MOD = 1e9 + ;
const int N = ;
LL dp[][N][N][], pre[][N][N][], suf[][N][N][]; int main() { // 前i个人,第i个人在第j个位置,有k个活着的人,这个人的状态为t(是否开枪) LL n, k;
while (cin >> n >> k) { rep(i, , ) rep(j, , n) rep(k, , n) rep(t, , )
dp[i][j][k][t] = suf[i][j][k][t] = pre[i][j][k][t] = ; dp[][][][] = ;
pre[][][][] = suf[][][][] = ;
rep(i, , n - ) {
int cur = i & , last = cur ^ ;
rep(j, , i) rep(k, , i) rep(t, , ) {
dp[cur][j][k][t] = k >= (t == )? pre[last][j - ][k - (t == )][ - t]: ;
if (t == ) {
(dp[cur][j][k][t] += (k >= ? suf[last][j][k - ][]: ) + suf[last][j][k][]) %= MOD;
}
}
rep(k, , i) rep(t, , ) pre[cur][][k][t] = , suf[cur][i + ][k][t] = ;
rep(j, , i) rep(k, , i) rep(t, , )
(pre[cur][j][k][t] = pre[cur][j - ][k][t] + dp[cur][j][k][t]) %= MOD;
dwn(j, i, ) rep(k, , i) rep(t, , )
(suf[cur][j][k][t] = suf[cur][j + ][k][t] + dp[cur][j][k][t]) %= MOD;
}
LL ans = ;
rep(i, , n - ) {
(ans += 1LL * dp[(n - ) & ][i][k - ][] + 1LL * dp[(n - ) & ][i][k][]) %= MOD;
}
ans = ans * (LL)n % MOD;
cout << ans << endl;
}
}

Bupt归队赛, gunfight的更多相关文章

  1. 【HUD-5790】Prefix (主席树+tire)

    似乎是归队赛的最后一道题. 由于当时以为是公共字串所以没写555555,其实是求公共前缀. 做法是建立tire,把tire上的点编号看成是值,查询第l到第r个字符串的区间内不重复的值的个数.建立主席树 ...

  2. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  3. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  4. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  5. SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

            题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音?       ...

  6. SCNU 2015ACM新生赛初赛【1007. ZLM的扑克牌】解题报告

            题目链接详见SCNU 2015新生网络赛 1007. ZLM的扑克牌 .         其实我在想这题的时候,还想过要不要设置求最小的排列,并且对于回文数字的话,可以把扑克牌折起来( ...

  7. SCNU 2015ACM新生赛初赛【1006. 3D打印】解题报告

            题目链接详见SCNU 2015新生网络赛 1006. 3D打印 .出题思路来自codevs 3288. 积木大赛,属于模拟题.         首先我们把“选择从第L部分到第R部分”理 ...

  8. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  9. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

随机推荐

  1. 467A

    #include <stdio.h> int main() { int n; int p, q; int rooms=0; scanf("%d", &n); i ...

  2. DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板

    DAX/PowerBI系列 - 参数表(Parameter Table) 度量值模板 难度: ★★☆☆☆(2星) 适用范围: ★★★☆☆(3星) 概况: 当你有多个度量值都需要计算YTD,MoM,而又 ...

  3. Tomcat服务安全加固

    Tomcat服务默认启用了管理后台功能,使用该后台可直接上传 war 文件包对站点进行部署和管理.由于运维人员的疏忽,可能导致管理后台存在空口令或者弱口令的漏洞,使得黑客或者不法分子可以利用该漏洞直接 ...

  4. C语言进阶之路(二)----字符串操作常见模型

    1.while模型 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #includ ...

  5. shell中输出日期的一个函数

    开始 function T () { date '+%F %T.%N' } 结束

  6. 关于table的td和ul元素li隔行变色的功能实现

    table元素的td和ul元素li隔行变色的功能实现 利用css控制二者的样式轻松实现隔行换色: 例如:table的css样式控制: table tr td{   background-color:颜 ...

  7. 【Spark-core学习之五】 RDD宽窄依赖 & Stage

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  8. qt creator中编辑Makefile的设置

    在qt creator中编辑Makefile时的Tab键总是不能识别,需要这样设置

  9. 『Numpy』np.meshgrid

    生成网格坐标,一个很好的说明图如下: 虽然xy双坐标比较常用,但实际上其输入可以是任意多的数组,输出数组数目等于输出数组数目,且彼此间shape一致. 如果输入数组不是一维的,会拉伸为1维进行计算. ...

  10. java SE学习过程中的知识点小结(一)(很多内容过于基础,希望能帮助到学习路上的同学)————欢迎老手批评指正

    ①.把boolean测试放在括号内:例如while(x==4){}  //当然看过很多博客,里面有工作经验的工作者说以后公司可能习惯性写(4==x) ②.所有java程序都定义在类中(也是区别于C++ ...