首页 > 其他分享 >P8612 [蓝桥杯 2014 省 AB] 地宫取宝

P8612 [蓝桥杯 2014 省 AB] 地宫取宝

时间:2024-03-12 11:44:47浏览次数:18  
标签:AB P8612 get int dfs 蓝桥 dx dy include

https://www.luogu.com.cn/problem/P8612#submit

原始暴搜代码,没有记忆化,会tle

#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
using namespace std;
typedef long long ll;

int n, m, k;
int mplst[60][60];
ll ans = 0;
ll mod = 1000000007;
bool vis[60][60] = { 0 };
int del[][2] = { {0,1},{1,0}};
ll dp[60][60];
void dfs(int x,int y,int max,int k_get)//(x,y),max:当前索取的礼物的最大值,k:当前拿了多少礼物
{
	if(x==n-1 and y==m-1)
	{
		if (k_get == k)
			ans++;
		return;
	}
	if (k_get > k)return;
	if (k_get + n - x + m - y -1< k)return;
	for (int i = 0; i < 2; i++)
	{
		int dx = del[i][0], dy = del[i][1];
		if(x+dx>=0 and x+dx<n and y+dy>=0 and y+dy<m)
		{
				if (!vis[x + dx][y + dy])
				{
					vis[x + dx][y + dy] = 1;
					if (mplst[x + dx][y + dy] > max)
					{
						//get
						dfs(x + dx, y + dy, mplst[x + dx][y + dy], k_get + 1);
						//not get
						dfs(x + dx, y + dy, max, k_get );
					}
					else
						dfs(x + dx, y + dy, max, k_get);
					vis[x + dx][y + dy] = 0;
				}
		}
	}
}
int main()
{
	cin >> n >> m >> k;
	memset(mplst, -1, sizeof(mplst));
	memset(vis, 0, sizeof(vis));
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			cin >> mplst[i][j];
	dfs(0, 0, 0, 0);
	memset(vis, 0, sizeof(vis));
	dfs(0, 0, mplst[0][0], 1);
	ans %= mod;
	cout << ans;
	return 0;
}

标签:AB,P8612,get,int,dfs,蓝桥,dx,dy,include
From: https://www.cnblogs.com/zzzsacmblog/p/18067966

相关文章

  • matlab还可以这么升级
    由于之前安装的matlab2023a是u5的版本的,今天提示有升级,上次升级的matlab挂了,这次抱着试试看看的心态升级,居然成功了。记录如下:1.不要用普通用户启动matlab,使用root启动matlab,我的matlab安装在/usr/local目录下,普通用户不具备写入该目录的权限,容易浪费感情2.cd  /usr/l......
  • 实例带你了解GaussDB数据库的LOCK TABLE
    本文分享自华为云社区《GaussDB数据库SQL系列-LOCKTABLE》,作者:酷哥。一、前言GaussDB是一款高性能、高可用的分布式数据库,广泛应用于各类行业和场景。在GaussDB中,锁是实现并发控制的关键机制之一,用于协调多个事务之间的数据访问,确保数据的一致性和完整性。本文将围绕GaussDB数......
  • Gitlab如何将多个项目移动到指定目录/群组?
    将您的个人项目移至群组本教程将向您展示如何将个人项目移动到群组中。为什么群组很重要?在极狐GitLab中,使用群组可以同时管理一个或多个相关项目。群组具有很多的好处。例如,您可以:管理您的项目的权限。查看群组中项目的所有议题和合并请求。查看您命名空间中的所有项目......
  • Zabbix 7.0编译部署教程
    Zabbix7.0alpha版本、beta版本已经陆续发布,Zabbix7.0LTS版本发布时间也越来越近。据了解,新的版本在性能提升、架构优化等新功能方面有非常亮眼的表现,不少小伙伴对此也已经跃跃欲试。心动不如行动,不妨先体验了一把beta版本。本教程仅适用于编译部署Zabbix7.0beta1版本,部署环境......
  • JAVA常用类--AutoCloseable接口
    AutoCloseable接口自动关闭,释放资源机制在实际的项目开发过程中,一般都有可能连接到一些资源,比如:文件资源、网络资源、数据库资源,在实际项目之中进行资源访问的社会一般有如下几个操作步骤:不使用AutoCLoseable:手动定义关闭函数按照正常的结构设计来讲,当前的程序已经可以满足......
  • ABC334
    F:我们可以更好的利用一操作——当且仅当钱不够用时,加上经过的所有点中最大的\(P\),也就是在那个点插入一次一操作。设\(dp_{i,j,x,y}=(step,money)\)表示到达点\((i,j)\),经过的最大的\(P\)在点\((x,y)\),最少需要\(val\)次一操作(移动操作最后算上就行了),此前提下手头的钱......
  • matlab读取hdf5文件
    使用matlab2021b读取hdf5文件info=h5info('00030043.hdf5');data_df=h5read('00030043.hdf5','/df');data_angle=h5read('00030043.hdf5','/line_level');b=reshape(data_df,500,[])grayImage=mat2gray(b');imsho......
  • Ubuntu.software.rabbitsvc 电脑死活没有右键rabbitsvc菜单+密码没有记住没法保存
    本来这个想发到每日运维的,但是觉得这个比较典型,适合拿来单独说。 现象:其他人电脑装rabbitsvc一次就成功,有的不成功重启一下就好了,或是使用nautilus-a重启一下文件管理器就好了,但是这一台就是不行,版本同样是20.04,太奇怪了小知识:ubuntu20.04有两种文件管理器,一个是nautil......
  • m基于深度学习的32QAM调制解调系统相位检测和补偿算法matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要        随着通信技术的飞速发展,高阶调制格式如32QAM(32-QuadratureAmplitudeModulation,32进制正交幅度调制)在高速数据传输中得到了广泛应用。然而,由于信道失真、噪声干扰等因素,接收端往往面......
  • abc311D 走迷宫之不撞南墙不回头
    有个大小为n*m的二维图,.为空地,#为障碍,最外层一圈固定为障碍,起点(2,2)固定为空地,每次可以沿上下左右其中一个方向走,直到碰见障碍才能转向。问最多可以走过多少个空地?初始时方向任意,可以走多次。bfs模拟,由于中途不能转向,把当前方向也塞到节点里。除1234分别对应上下左右外,新增一种......