Bupt归队赛, gunfight
只需要关心是否开枪,上个人和当前这个人的位置关系,转移可以前缀和优化
为了不重复,始终认为第一个就是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的更多相关文章
- 【HUD-5790】Prefix (主席树+tire)
似乎是归队赛的最后一道题. 由于当时以为是公共字串所以没写555555,其实是求公共前缀. 做法是建立tire,把tire上的点编号看成是值,查询第l到第r个字符串的区间内不重复的值的个数.建立主席树 ...
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告
题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音? ...
- SCNU 2015ACM新生赛初赛【1007. ZLM的扑克牌】解题报告
题目链接详见SCNU 2015新生网络赛 1007. ZLM的扑克牌 . 其实我在想这题的时候,还想过要不要设置求最小的排列,并且对于回文数字的话,可以把扑克牌折起来( ...
- SCNU 2015ACM新生赛初赛【1006. 3D打印】解题报告
题目链接详见SCNU 2015新生网络赛 1006. 3D打印 .出题思路来自codevs 3288. 积木大赛,属于模拟题. 首先我们把“选择从第L部分到第R部分”理 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
随机推荐
- winfrom弹出窗口用timer控件控制倒计时20秒后关闭
功能描述: 因为在程序退出时需要确认是否是误操作,所以加了密码输入的子窗体,子窗体在20秒内会自动关闭 代码如下: private int count; private void Form2_Load ...
- Jmeter学习之-获取登录的oken值(1)
ps: 这里只着重讲述如何实时获取其他接口返回的值,作为此次接口的参数传递,添加接口请求的相关不再详述,可查看上一篇文章 为了方便管理,此处将:登录接口单独放在一个线程组下面,需要使用登录接口返回的t ...
- C#基础加强(1)之索引器
索引器 介绍 索引器,初学者可能听起来有些陌生,但其实我们经常会用到它,例如: // 字符串的索引器 string str = "hello world"; ]; // 获取到字符 ...
- python基础(2)-运算符&while循环
算术运算符 a=5; b=2; print(a+b);#result:7 desc:加 print(a-b);#result:3 desc:减 print(a*b);#result:10 desc:乘 ...
- python框架之Django(11)-中间件
介绍 在django中,中间件其实就是一个类,在一个请求到来和这个请求结束之前,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项目的settings模块中,有一个 M ...
- Python数据分析与挖掘常用模块
python在数据科学方面需要用到的库: a.Numpy:科学计算库.提供矩阵运算的库. b.Pandas:数据分析处理库 c.scipy:数值计算库.提供数值积分和常微分方程组求解算法.提供了一个非 ...
- 【Java】NO.120.JDK.1.JDK8.1.001-【Java8实战】
Style:Mac Series:Java Since:2018-09-26 End:2018-09-26 Total Hours:1 Degree Of Diffculty:5 Degree Of ...
- JAVA:IDEA使用Junit(3)
1.配置 File ——> Project Structure ——> Libraries ——> + ——>搜索Junit类库 确认ok即可 2.编辑项目 选择创建 配置生成 ...
- 栈ADT
栈 栈是限制插入和删除只能在同一位置的表,这一位置称为栈顶(top),也可能称为LIFO表 对于空栈的pop(弹栈)操作是一个ADT错误,但是若是push(压栈)时空间超限并不是ADT错误 实现:基于 ...
- 152. Maximum Product Subarray(动态规划)
Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...