2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索
邱老师降临小行星
Time Limit: 20 Sec Memory Limit: 256 MB
题目连接
http://acm.uestc.edu.cn/#/contest/show/61
Description
人赢邱老师和任何男生比,都是不虚的。有一天,邱老师带妹子(们)来到了一个N行M列平面的小行星。对于每一个着陆地点,邱老师总喜欢带着妹子这样走:假设着陆地点为(r0, c0),那么他们下一步只能选择相邻格点,向四周走,即(r0–1, c0), (r0 + 1, c0), (r0, c0–1)或(r0, c0 + 1)。之后的路程必须严格按照右转-前进-左转-前进-右转......的道路前行。但是由于邱老师很心疼妹子,所以崎岖的山脉不可以到达。当不能前进时必须要原路返回。如下图。
问,邱老师在哪里着陆可以游历这颗星球最多的土地,输出可能访问到的最多的格点数。
Input
Output
对于每一组数据,输出一个整数后换行,表示选择某点着陆后,可能访问到的最多的格点数。
Sample Input
4 3
111
111
111
111
3 3
111
101
111
Sample Output
4
HINT
题意
题解:
记忆化搜索,存一下值就好了
代码:
//qscqesze #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #include <iostream> #include <algorithm> #include <set> #include <vector> #include <sstream> #include <queue> #include <typeinfo> #include <fstream> #include <map> #include <stack> typedef long long ll; using namespace std; //freopen("D.in","r",stdin); //freopen("D.out","w",stdout); #define sspeed ios_base::sync_with_stdio(0);cin.tie(0) #define maxn 200001 #define mod 10007 #define eps 1e-9 int Num; char CH[20]; //const int inf=0x7fffffff; //нчоч╢С const int inf=0x3f3f3f3f; /*inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); } */ //************************************************************************************** inline ll read() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return x*f; } inline void P(int x) {Num=0;if(!x){putchar('0');puts("");return;}while(x>0)CH[++Num]=x%10,x/=10;while(Num)putchar(CH[Num--]+48);puts(""); }char s[1001][1001]; int dp[1001][1001][8]; int dx[8]={-1,0,0,1,1,0,0,-1}; int dy[8]={0,1,1,0,0,-1,-1,0}; int n,m; void dfs(int i,int j,int k) {if(k%2==0){if(i+dx[k]<0||i+dx[k]>=n||j+dy[k]<0||j+dy[k]>=m)dp[i][j][k]=0;else if(s[i+dx[k]][j+dy[k]]=='0')dp[i][j][k]=0;else{if(dp[i+dx[k]][j+dy[k]][k+1]==-1)dfs(i+dx[k],j+dy[k],k+1);dp[i][j][k]=1;dp[i][j][k]+=dp[i+dx[k]][j+dy[k]][k+1];}}else{if(i+dx[k]<0||i+dx[k]>=n||j+dy[k]<0||j+dy[k]>=m)dp[i][j][k]=0;else if(s[i+dx[k]][j+dy[k]]=='0')dp[i][j][k]=0;else{if(dp[i+dx[k]][j+dy[k]][k-1]==-1)dfs(i+dx[k],j+dy[k],k-1);dp[i][j][k]=1;dp[i][j][k]+=dp[i+dx[k]][j+dy[k]][k-1];}} } int main() {int t=read();for(int cas=1;cas<=t;cas++){n=read(),m=read();for(int i=0;i<n;i++)for(int j=0;j<m;j++)for(int k=0;k<8;k++)dp[i][j][k]=-1;for(int i=0;i<n;i++)scanf("%s",s[i]);int ans2=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(s[i][j]=='0')continue;int ans=1;if(dp[i][j][0]==-1)dfs(i,j,0);ans+=dp[i][j][0];if(dp[i][j][2]==-1)dfs(i,j,2);ans+=dp[i][j][2];if(dp[i][j][4]==-1)dfs(i,j,4);ans+=dp[i][j][4];if(dp[i][j][6]==-1)dfs(i,j,6);ans+=dp[i][j][6];ans2=max(ans2,ans);}}printf("%d\n",ans2);} }
转载于:https://www.cnblogs.com/qscqesze/p/4489779.html
2015 UESTC 搜索专题B题 邱老师降临小行星 记忆化搜索相关推荐
- [蓝桥杯][2014年第五届真题]地宫取宝(记忆化搜索)
题目描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...
- [Leetcode][第322题][JAVA][零钱兑换][回溯][记忆化搜索][动态规划]
[问题描述][中等] [解答思路] 1. 递归(超时) class Solution {int res = Integer.MAX_VALUE;public int coinChange(int[] ...
- [Leetcode][第312题][JAVA][戳气球][动态规划][记忆化搜索]
[问题描述][困难] [解答思路] 1. 记忆化搜索 时间复杂度:O(n^3) 空间复杂度:O(n^2) class Solution {public int[][] rec;public int[] ...
- 2015 UESTC 数据结构专题N题 秋实大哥搞算数 表达式求值/栈
秋实大哥搞算数 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1074 Des ...
- 2015 UESTC 数据结构专题H题 秋实大哥打游戏 带权并查集
秋实大哥打游戏 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...
- 2015 UESTC 数据结构专题G题 秋实大哥去打工 单调栈
秋实大哥去打工 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Descr ...
- 2015 UESTC 数据结构专题A题 秋实大哥与小朋友 线段树 区间更新,单点查询,离散化...
秋实大哥与小朋友 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 Desc ...
- 2015 UESTC 数据结构专题D题 秋实大哥与战争 变化版本的线段树,合并区间,单点查询...
D - 秋实大哥与战争 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/59 D ...
- 巧用记忆化搜索代替暴力递归(洛谷P1464题题解,Java语言描述)
题目要求 P1464题目链接 分析 如果--你信了这题干,真的写了递归--TLE警告!!! 所以,就需要优化嘛-- [−9223372036854775808,9223372036854775807] ...
最新文章
- 深度揭秘强化学习技术与落地!智源大会「强化学习与决策智能」专题论坛
- LeetCode Text Justification(贪心)
- seq2seq和Transformer
- 工作中常用的linux命令,工作中常用的Linux命令
- Python 编程快速上手 第十七章 操作图像
- Pattern Discovery and Anomaly Detection via Knowledge Graph-学习笔记
- python 读取jpg文件是yuv_Python读取YUV文件,并显示的方法
- Linux cat 命令用法
- string的一些基本操作和骚操作
- [C++]动态规划系列之币值最大化
- 24c存储器读写软件_必知必会-存储器层次结构
- android 铃音制作工具,手机铃声制作大师
- 8086汇编实现 加密解密软件
- 阿里发力硬件,先做路由器再造电视机
- 区块链和央行数字货币DCEP
- 一个简单的例子由易到难理解动态规划
- win11什么时候发布的_2019年8月证券从业资格考试报名通知什么时候发布?
- Vargant - 复数VM共用相同的私有key
- 你好,C++(29)脚踏两只船的函数不是好函数 5.4 函数设计的基本规则
- keil当中报错FCARM - Output Name not specified, please check ‘Options for Target - Utilities‘
热门文章
- 【HDU - 1166】敌兵布阵 (线段树模板 单点更新+ 区间查询)
- Windows下 Python3.7.0 运行环境的搭建 一套操作后就可以使用Python写代码啦~
- LeetCode刷题实战(43):Multiply Strings
- matlab中均线交易策略,【每日一策】Matlab量化交易策略之 均线选股策略
- CSS中属性个属性值怎么区分,[CSS] 详细解释 @media 属性与 (max
- vue解决v-for报错 [vue/valid-v-for]Custom elements in iteration require ‘v-bind:key‘ directives
- leetcode1502. 判断能否形成等差数列(小学生难度)
- leetcode79. 单词搜索 网格地图搜索+回溯经典写法啦
- (六)nodejs循序渐进-数据流和文件操作(基础篇)
- 《Java8实战》笔记(07):并行数据处理与性能