题目链接:https://nanti.jisuanke.com/t/31434

小 D 是一位著名的车手,他热衷于在广场上飙车。每年儿童节过后,小 D 都会在广场上举行一场别样的车技大赛。

小 D 所在的广场可以看作一个 W×H 的网格,初始时小 D 位于左下角的 (1,1) 处,他的目的地是位于右上角的 (W,H)。

每次移动时,小 D 会选择位于他右上方的一个方格,并移动到这个方格。由于车技的限制,每次移动小 D 的横坐标变化和纵坐标变化都不能超过 K。

也就是说,每次小 D 会在以当前位置为左下角的边长为 K+1 的正方形中选择一个方格作为移动的目的地,但不能原地不动。

作为小 D 的竞争对手,小 J 想知道小 D 一共有多少种从 (1,1) 移动到 (W,H) 的方案数,以提高他在大赛中胜出的概率。

请你完成程序,协助小 J 在这场大赛中战胜小 D。由于方案数过大,你需要将答案对 998244353 进行取模。

输入格式

输入包含三个正整数 W,H,K。

输出格式

输出一个整数表示答案。

数据规模

对于 30% 的数据:W,H≤8;

对于 60% 的数据:K=1;

对于 100% 的数据:1≤W,H,K≤2000。

输出时每行末尾的多余空格,不影响答案正确性

要求使用「文件输入输出」的方式解题,输入文件为 racing.in,输出文件为 racing.out

样例输入
3 3 2
样例输出
26
题目来源
计蒜客 NOIP 提高组模拟竞赛第一试

题解:

考虑普通的 $dp[i][j] = \sum\limits_{a = L+1}^i {\sum\limits_{b = D+1}^j {((a = = i\& \& b = = j)?0:dp[a][b])} }$,显然就是一整个大方块去掉一小格求和,

其中,$D = \max(0,i-k-1)$ 为下开边界,$L = \max(0,j-k-1)$ 为左开边界,

如果我们老老实实的纯暴力DP,显然就是 $O(WHK^2)$ 的时间复杂度,能过有鬼……

需要使用前缀和优化,不妨假设 $sum[i][j] = \sum\limits_{a = 1}^i {\sum\limits_{b = 1}^j {dp[a][b]} }$,

那么,显然有状态转移方程 $dp[i][j] = (sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1]) - (sum[D][j] + sum[i][L] - sum[D][L])$,

进而显然有状态转移方程:

$\begin{array}{l} sum[i][j] \\ = (sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1]) + dp[i][j] \\ = 2(sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1]) - (sum[D][j] + sum[i][L] - sum[D][L]) \\ \end{array}$

最后,易知答案为 $dp[h][w] = sum[h][w] - (sum[h - 1][j] + sum[i][w - 1] - sum[h - 1][w - 1])$。

AC代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll; const ll MOD=;
const int maxn=+; int w,h,k;
ll sum[maxn][maxn]; int main()
{
freopen("racing.in","r",stdin);
freopen("racing.out","w",stdout); scanf("%d%d%d",&w,&h,&k); memset(sum,,sizeof(sum));
sum[][]=;
for(int i=;i<=h;i++)
{
for(int j=;j<=w;j++)
{
if(i==&&j==) continue;
int L=max(,i-k-),D=max(,j-k-);
sum[i][j]=*(sum[i-][j]+sum[i][j-]-sum[i-][j-])-(sum[L][j]+sum[i][D]-sum[L][D]);
while(sum[i][j]<) sum[i][j]+=MOD; sum[i][j]%=MOD;
}
}
ll ans=sum[h][w]-sum[h-][w]-sum[h][w-]+sum[h-][w-];
while(ans<) ans+=MOD; ans%=MOD;
printf("%lld",ans);
}

这么简单一个题,我当初也不知道发什么神经……非要用%I64d输出long long类型,WA到死啊……难受啊……

计蒜客 31434 - 广场车神 - [DP+前缀和]的更多相关文章

  1. 计蒜客 宝藏 (状压DP)

    链接 : Here! 思路 : 状压DP. 开始想直接爆搜, T掉了, 然后就采用了状压DP的方法来做. 定义$f[S]$为集合$S$的最小代价, $dis[i]$则记录第$i$个点的"深度 ...

  2. 计蒜客 31436 - 提高水平 - [状压DP]

    题目链接:https://nanti.jisuanke.com/t/31436 作为一名车手,为了提高自身的姿势水平,平时的练习是必不可少的.小 J 每天的训练包含 $N$ 个训练项目,他会按照某个顺 ...

  3. [计蒜客] 矿石采集【记搜、Tarjan缩点+期望Dp】

    Online Judge:计蒜客信息学3月提高组模拟赛 Label:记搜,TarJan缩点,树状数组,期望Dp 题解 整个题目由毫无关联的两个问题组合成: part1 问题:对于每个询问的起点终点,求 ...

  4. 计蒜客 NOIP 提高组模拟竞赛第一试 补记

    计蒜客 NOIP 提高组模拟竞赛第一试 补记 A. 广场车神 题目大意: 一个\(n\times m(n,m\le2000)\)的网格,初始时位于左下角的\((1,1)\)处,终点在右上角的\((n, ...

  5. 2019计蒜客信息学提高组赛前膜你赛 #2(TooYoung,TooSimple,Sometimes Naive

    计蒜客\(2019CSP\)比赛第二场 巧妙爆零这场比赛(我连背包都不会了\(QWQ\) \(T1\) \(Too\) \(Young\) 大学选课真的是一件很苦恼的事呢! \(Marco\):&qu ...

  6. 计蒜客 作弊揭发者(string的应用)

    鉴于我市拥堵的交通状况,市政交管部门经过听证决定在道路两侧安置自动停车收费系统.当车辆驶入车位,系统会通过配有的摄像头拍摄车辆画面,通过识别车牌上的数字.字母序列识别车牌,通过连接车管所车辆信息数据库 ...

  7. 计蒜客的一道题dfs

    这是我无聊时在计蒜客发现的一道题. 题意: 蒜头君有一天闲来无事和小萌一起玩游戏,游戏的内容是这样的:他们不知道从哪里找到了N根不同长度的木棍, 看谁能猜出这些木棍一共能拼出多少个不同的不等边三角形. ...

  8. 计蒜客模拟赛5 D2T1 成绩统计

    又到了一年一度的新生入学季了,清华和北大的计算机系同学都参加了同一场开学考试(因为两校兄弟情谊深厚嘛,来一场联考还是很正常的). 不幸的是,正当老师要统计大家的成绩时,世界上的所有计算机全部瘫痪了. ...

  9. 计蒜客 等边三角形 dfs

    题目: https://www.jisuanke.com/course/2291/182238 思路: 1.dfs(int a,int b,int c,int index)//a,b,c三条边的边长, ...

随机推荐

  1. 基于Centos搭建 Mono 开发环境

    系统要求: CentOS 7.2 64 位操作系统 安装 Mono 安装前的准备 yum install yum-utils 执行命令添加安装包仓库 rpm --import "http:/ ...

  2. javascript中的数据结构

    Javascript中的关键字   abstract     continue      finally      instanceof      private       this boolean ...

  3. [Aaronyang] 写给自己的WPF4.5 笔记7[三巴掌-ItemsControl数据绑定详解与binding二次处理 3/3]

    我要做回自己--Aaronyang的博客(www.ayjs.net) 博客摘要: 全方位的讲解了转换器的使用,单值,多值转换器,条件转换器,StringFormat等方式 详细的实践地讲解了Items ...

  4. 11G新特性 -- 块介质恢复性能增强(block media recovery)

    块介质恢复性能增强(block media recovery) :只是恢复受损的块.不需要将受损的数据文件offline.针对受损的数据块,使用备份中好的数据块进行restore和recover,避免 ...

  5. SNF快速开发平台MVC-审核流,审核完成后会给下一个审核人发邮件,下一个审核人可以不登录系统,在邮件里进行审核处理

    审核流设计和使用参考以下资料: 审核流设计 http://www.cnblogs.com/spring_wang/p/4874531.html 审核流实例 http://www.cnblogs.com ...

  6. Django TemplateDoesNotExist

    在联系Django的时候,启动正常,我在浏览器上输入URL地址后报错 TemplateDoesNotExist at /test/ 解决方案 默认这里是空的,这里我们填上我们静态文件的地址

  7. 将自己写的HDL代码封装成带AXI总线的IP

    将自己写的HDL代码封装成带AXI总线的IP 1.Tools->create and package IP 2.create AXI4总线的IP 3.新建block design 4.点击右键, ...

  8. ElasticSearch性能优化策略【转】

    ElasticSearch性能优化主要分为4个方面的优化. 一.服务器部署 二.服务器配置 三.数据结构优化 四.运行期优化 一.服务器部署 1.增加1-2台服务器,用于负载均衡节点 elasticS ...

  9. TCP/IP协议理解

    TCP/IP协议理解 一.    协议分层 由于ISO标准中的网络模型是个7层模型,但是由于7层模型对于当时的网络厂商来说太过复杂,很多厂家采用了简化的4层模型来实现网络设备,4层模型也就成了事实的网 ...

  10. 【30集iCore3_ADP出厂源代码(ARM部分)讲解视频】30-11层驱动之FSMC

    视频简介:该视频介绍iCore3应用开发平台中FSMC通信的配置方法及ARM与FPGA通信的方法. 源视频包下载地址:链接:http://pan.baidu.com/s/1slbHOCH 密码:n06 ...