HDU 1978 How many ways

人工势场法在自动驾驶避障中的实践与优化 本文深入探讨了人工势场法在自动驾驶避障中的核心原理与实践优化。通过解析引力与斥力模型,揭示了经典算法在局部最优和目标不可达等问题上的局限性,并重点介绍了改进斥力场函数、引入道路边界斥力及动态参数调整等关键优化策略,有效提升了该局部路径规划算法在复杂动态场景下的实用性与鲁棒性。 阅读详情

传送门

dfs记忆化搜索、动态规划。
是中文题,但是题意没说清楚,反正把我恶心到了。你是真的牛批。

两个地方没说清楚。

  1. 实际上每到一条路径终点之后就清除身上携带的能量值(若没用完),然后再加上这个路径终点的能量值。
    若按我理解的那样,则每个点的状态要用三维数组表示,其中第三维表示在当前点含有e能量值到终点的路数。可知当e>=N-x+M-y时的状态都等价。
  2. 这个题中说的总体路线是一条条路径组成的,它不关心每条路径的具体走法,它只关心每条路径的路径终点是什么。也就是说,总体路线是这样标识的:((1,1),路径终点,路径终点,。。。,路径终点,(N,M))。这个序列不同则路线不同,这个序列相同则路线相同。
    若按我理解的那样,每条路径还要计算有多少种走法,然后dp[x][y] += num[dx][dy]*dp[x+dx][y+dy]。(计算这个不难,dp转移式:num[dx][dy] = num[dx-1][dy]+num[dx][dy-1],dx,dy表示两点间的坐标差值)

然后再说几个注意的地方:

  1. 如果把dp的初始值设为0,则与计算出来dp真的等于0的那些值混淆了,这就意味着每次这些“真”0值都无法被记忆化了。所以我们设初始值都为-1,彻底区分未计算值和已计算值。(但这样的话,每次计算前别忘了先清零)
  2. 直接枚举增量,然后在第二层循环for内部直接判断dx+dy<=a[x][y],这样枚举的三角形斜边就出来了,很巧妙。

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

const int MOD = 10000;
const int MAX = 101;
int N, M, T;
int a[MAX][MAX];
//int num[MAX][MAX];                    // 没用了,人家不关心你是怎么走到下一跳的
int dp[MAX][MAX];

void init()
{
	//memset(num, 0, sizeof num);
	memset(dp, -1, sizeof dp);
}

//void run1()
//{
//	for (int i = 0; i < MAX; i++)
//		num[0][i] = num[i][0] = 1;
//	for (int i = 1; i <= N - 1; i++)
//		for (int j = 1; j <= M - 1; j++)
//			num[i][j] = num[i - 1][j] + num[i][j - 1];
//}

int run(int x, int y)
{
	if (x == N && y == M) return 1;
	if (dp[x][y] != -1) return dp[x][y];
	dp[x][y] = 0;                                     // 因为把初始值都弄成-1了,所以这里还要再清零
	for (int dx = 0; dx <= a[x][y]; dx++)
	{
		if (x + dx > N) break;                        // 之后的dx只会更大,所以可以退出循环了
		for (int dy = 0; dx + dy <= a[x][y]; dy++)    // 这里的限制条件提前到循环中判断,很巧妙
		{
			if (y + dy > M) break;
			if (dx == 0 && dy == 0) continue;
			dp[x][y] += run(x + dx, y + dy);          // 这里不用模
		}
	}
	return dp[x][y] %= MOD;                           // 这里的“=”别丢了,不然以后再引用的是原值
}

int main()
{
	scanf("%d", &T);
	for (; T--;)
	{
		scanf("%d%d", &N, &M);
		init();
		for (int i = 1; i <= N; i++)
			for (int j = 1; j <= M; j++)
				scanf("%d", &a[i][j]);
		
		//run1();
		printf("%d\n", run(1, 1));
	}

	return 0;
}
CentOS7下用FreeRADIUS+AD实现802.1X认证完整指南(附华为交换机配置) 本文提供了在CentOS 7系统上部署FreeRADIUS并与Windows Active Directory集成,以实现企业级802.1X网络认证的完整实战指南。内容涵盖从架构原理、服务器配置(包括Kerberos、Samba Winbind集成)、FreeRADIUS核心设置与AD联动,到华为交换机的详细配置步骤。重点解决了生产环境中常见的高可用、动态VLAN下发及深度排错问题,为企业构建集中、安全的网络准入控制体系提供了经过验证的解决方案。 阅读详情

相关推荐

北斗B1频点信号捕获实战:如何应对NH码跳变带来的挑战?

本文深入探讨了北斗B1频点信号捕获中NH码跳变带来的核心挑战。针对NH码以1kHz速率调制导致的相干积分中断和相关峰畸变问题,文章提出并详细解析了一种基于伪码与多普勒频率分离技术的优化捕获方案。该方案通过差分处理消除NH跳变影响,并利用匹配滤波器与FFT分别进行码相位和多普勒频率的快速估计,有效提升了弱信号环境下的捕获灵敏度和稳定性,为北斗接收机设计提供了实用的工程参考。

joy55的博客 534

HDU--杭电--1978--How many ways--记忆化搜索--这个鸟东西应该能算半个DP吧

How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1970    Accepted Submission(s): 1204 Problem Description 这是一个简单的生存游戏,你控

浩爷地带,你的地盘听我的.... 1520

邮件伪造和SPF

之前看了下邮件伪造觉得挺有意思的,所以看了下邮件伪造的东西,下面简单的总结了一下,如果有不妥的地方还望大佬们提出来。 1. 什么是SPF SPF是 Sender Policy Framework 的缩写,一种以IP地址认证电子邮件发件人身份的技术,是为了防范垃圾邮件而提出来的一种DNS记录类型,它是一种TXT类型的记录。 接收邮件方会首先检查域名的SPF记录,来确定发件人的IP地址是否被包含在SP...

SunJ3t的菠萝屋 2448

hdu1978--How many ways(内存搜索)

How many ways Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3007Accepted Submission(s): 1759 Problem Description 这是一个简单的...

aofan9566的博客 176

Android Jetpack 最全面试题及参考答案

要使用 WorkManager 定义一个异步任务,以下是详细步骤。首先,需要创建一个继承自 Worker 类的自定义类,这个类代表了要执行的具体任务逻辑。// 在这里编写具体的任务逻辑,比如从网络下载文件try {在上述代码中,doWork方法就是任务的核心执行逻辑所在,这里模拟了从给定的 URL 下载文件到本地的操作,若下载成功返回,若出现异常则返回。然后,在需要调度任务的地方,比如在某个 Activity 或者 Fragment 中,通过构建 WorkRequest 来安排任务执行。

大模型大数据攻城狮的专栏 1895

YOLO26 终极蒸馏指南:从入门到 SOTA (The Ultimate Distillation Guide)

《YOLO26 蒸馏技术指南》深入解析了知识蒸馏在目标检测中的应用,提出五大蒸馏范式:响应蒸馏(学习最终输出)、特征蒸馏(模仿中间特征)、关系蒸馏(捕捉通道关联)、CWD(通道语义对齐)和FGD(前景背景分离)。实验表明,"Response KD + CWD + FGD"组合效果最佳,使YOLO26n在0.5ms推理速度下达到0.956 mAP50,甚至超越教师模型。指南提供模块化代码实现和超参数调优建议,强调蒸馏能平衡模型精度与效率,是轻量化部署的有效方案。

weixin_51988935的博客 717

hdu 2157:How many ways??

中文题,简而言之,一个矩阵从A 点恰好经过k个点到达B点的方案数模上1000的余数为多少。   矩阵乘法就行,优化就变成了矩阵快速幂。注意的是从A到A则k=1,题目中有重边,但考虑时当成一条就行,还有,图是有向图。 #include #include #include using namespace std; int ans[25][25][25] ; bool had[25

u013898034的专栏 529

为什么先进工艺需要check那么多corner?

那么hold slack = launch clock path delay + data path delay - capture_clock_path_delay = -capture_clock_path_delay,也就是说,capture clock path delay越大,hold越难满足。而且,我们在设计的时候,一般clock频率都会过约,所以是有较大的margin的。有的foundry还会对rc的取值范围进行了约束,如cworst_T,采用的是1.5 sigma的取值范围。

芯冰乐 2086

HDU - 1978 -- How many ways【记忆化搜索】

How many ways Descripation 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择

qq_45249273的博客 286

Dify 第 3 篇 Dify 入门示例 - 聊天助手

本文介绍了如何使用Dify平台快速搭建一个聊天助手。首先通过创建空白应用并选择"聊天助手"模板完成基础设置,然后安装配置通义千问等大语言模型(LLM)并设置API密钥。进阶部分演示了如何创建支持编程语言选择的代码解释器,包括添加提示词约束、插入变量、设置开场白等功能。最后展示了运行效果:用户可选择编程语言后输入代码,系统会给出相应解释。文章还提到应用支持发布共享,并附有Dify官方文档参考链接。

甘蓝的专栏 863

Python爬虫实战:绕过Cloudflare反爬的最新技术与完整代码详解

在互联网数据采集领域,越来越多的网站开始部署CDN和安全防护服务,其中 Cloudflare 是最为广泛使用的防护方案之一。它不仅为网站提供DDoS防护,还能通过JS挑战、验证码和行为分析来识别并拦截爬虫。这给爬虫工程师带来了极大挑战——如何在不违反网站服务条款的情况下,实现有效的数据采集?本文将分享Python领域绕过Cloudflare反爬的最新技术方法,结合最新流行库与自动化浏览器,帮助你攻克这一难题。绕过Cloudflare反爬不是一蹴而就,需结合多技术、多策略,持续迭代。

2201_76125261的博客 2628

How many ways (记忆化搜索)

这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下:  1.机器人一开始在棋盘的起始点并有起始点所标有的能量。  2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。  3.机器人不能在原地停留。  4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。  如上图,机器人一开始在(1,1)点...

自渡的博客 1723

【AUTOSAR-COM】-10.5-APP CAN Frame/PDU“发送周期不准“的影响因素

一个Tx PDU在COM模块中的数据流; Tx APP CAN Frame/PDU"发送周期不准"的影响因素;

「汽车电子助手」的博客 2386

Hdu 1978 How many ways

Hdu 1978 How many ways 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978 解题思路:vis[n][m]置1,其他全置0,记忆化搜索搜一遍就行了; 代码如下: #include<bits/stdc++.h> using namespace std; int num[105][105],vis[105][105...

weixin_43823753的博客 159

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

HDU1978 How many ways 【DP】

How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3268    Accepted Submission(s): 1930 Problem Description 这是一个简单的生存游戏,

长风的专栏 1289

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

hdu1978 How many ways 暴力和记忆化

hdu1978 How many ways 题目传送门 Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这...

WWL0702的博客 2064

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

HDU-1978 How many ways

HDU-1978 How many ways Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终...

weixin_43406404的博客 237

hdu 1978 How many ways

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1978 第一次接触记忆化搜索+DP.. 题目中“他将只有终点所标记的能量”是解题的关键啊!一开始还老想剩余能量怎么处理.....悲剧。 这题可以分为两种DP方式,一种是当前的这个点可以到达其他点的方法数和能到达当前点的方法数。。 两种状态转移方程也差不多。 下面分别是两种方法的AC代码

1785

How many ways HDU - 1978

这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下:  1.机器人一开始在棋盘的起始点并有起始点所标有的能量。  2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。  3.机器人不能在原地停留。  4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机器人一开始在(1,1)点,...

Qtt110的博客 214

HDU 1978 How many ways (DP,计数)

http://acm.hdu.edu.cn/showproblem.php?pid=1978 How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3022    Accepted Submission(s

fcbruce 1129

HDU 1978 How Many Ways

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1978题目大意:<中文题>思路:二位的DP数组记录下某一位置有多少种走法。然后通过dfs的方法来深搜所有的点。每次将dp[i][j]加成dfs返回的值。最终dp[1][1]就是所求解代码如下:#include <iostream> #include <cstdio> #include <cstring>

首WA是我的 303

HDU 1978 How many ways (DP)

一个比较简单的DP,希望读者在看题解之前

AC_Arthur的专栏 1330

HDU - 1978 How many ways 【DP】【DFS】

Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量。 2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。 3.机器人不能在原地停留。 4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。 如上图,机器人一...

一定要站在自己热爱的生活里闪闪发光 3万+

HDU 1978 How many ways

How many ways Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1654Accepted Submission(s): 1016 Problem Description 这是一个简单的生存游戏,你控制...

anvt77205的博客 153
上一篇: HDU 1142 A Walk Through the Forest
下一篇: HDU 1596 find the safest road
Crossing over
博客等级 码龄10年 6粉丝 113原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值