tyvj p1004 滑雪
描述
例如样例中的那个矩形,可以从某个点滑向上下左右四个相邻的点之一。例如24-17-16-1,其实25-24-23…3-2-1更长,事实上这是最长的一条。
输入格式
第1行: 两个数字r,c(1<=r,c<=100),表示矩阵的行列。
第2..r+1行:每行c个数,表示这个矩阵。
输出格式
仅一行: 输出1个整数,表示可以滑行的最大长度。
测试样例1
输入
5 5
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
输出
25
根据题意可以轻易想出搜索。但是没有优化的搜索时间复杂度高达指数级,显然不可取。这里使用动态规划的方法。
首先假设题目是一维的,那么问题就很简单了——最长连续下降子序列,可以在O(n^2)的时间内解决,对于题目的数据范围已经可以接受了。现在只是增加了一个维度,题目本质并没有什么变化。
首先进行降维处理——将二维矩阵变位一维数组,当然需要记录每个点的坐标。然后按高度从小到大进行排序,然后求最长严格上升子序列(反过来从大到小排序,求严格下降子序列也可以)。如何求最长上升子序列不详细说明。当然,这样得到的答案只是最长,但是放到原来的数据中他们不一定是连续的,所以只需要在判断过程中加一个限制条件——两点挨着就可以。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#define max(a,b) ((a>b)? a:b)
using namespace std;
long n,m;
struct shuxing
{long x,y;long h;} s[10010];
long f[10010];bool cmp(shuxing a,shuxing b)
{return a.h<b.h;}bool xianglin(long a,long b)
{if(abs(s[a].x-s[b].x)==1 && s[a].y==s[b].y) return true;if(abs(s[a].y-s[b].y)==1 && s[a].x==s[b].x) return true;return false;}int main()
{cin>>n>>m;long a=0;for(long i=1;i<=n;i++)for(long j=1;j<=m;j++){s[++a].x=i;s[a].y=j;cin>>s[a].h;}sort(s+1,s+1+a,cmp);//for(long i=1;i<=a;)/*DP*/for(long i=1;i<=a;i++) f[i]=1;for(long i=a-1;i>0;i--) {for(long j=i+1;j<=a;j++) {if((s[j].h>s[i].h)&&(f[i]<f[j]+1)&&xianglin(i,j)) f[i]=f[j]+1;}}/*DPend*/long ff=0;for(long i=1;i<=a;i++) ff=max(ff,f[i]);cout<<ff<<endl;return 0;}
tyvj p1004 滑雪相关推荐
- |Tyvj|动态规划|P1004 滑雪
http://tyvj.cn/p/1004 由于考虑高度问题,确保每个值都算出来,这里用的是记忆化搜索. #include<cstdio> #include<cstring> ...
- Tyvj 1004 滑雪~
Tyvj 1004 问题描述: 输入一个 r*c 的矩阵,并且矩阵中的每个元素都是 正整数,从其中某个大的元素出发,向4个方向(上下左右) 递归,直到划出一条能够通过较多数字的线,并且 ...
- P1004 滑雪(DFS)
描述 trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形.为了得到更快的速度,滑行的路线必须向下倾斜. 例如样例中的那个矩形,可以从某个点滑 ...
- 2022-2028年中国滑雪产业投资分析及前景预测报告(全卷)
[报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了滑雪行业相关概述.中国滑雪行业运行环境.分析了中国滑雪行业的现状.中 ...
- COJN 0575 800601滑雪
800601滑雪 难度级别:B: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是 ...
- 基于PyGame的乒乓球和滑雪小游戏
基于PyGame的乒乓球和滑雪游戏 昝道广 概述 前言 乒乓球游戏规则 乒乓球游戏图形界面 乒乓球游戏部分代码 滑雪小游戏图形界面 滑雪小游戏规则 滑雪小游戏部分代码 技术分析 后记 前言 首先阿广确 ...
- [P1434 [SHOI2002]滑雪](DFS,记忆化搜索)
P1434 [SHOI2002]滑雪 题目描述 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你 ...
- 洛谷 P2573 [SCOI2012]滑雪
题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1<=i<=N)和一高度Hi.a180285 ...
- TYVJ P1080 N皇后 Label:dfs PS:以前做的一道题,贴出来防忘
描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描 ...
最新文章
- @autowired注解_SpringBoot常用注解大全
- JVM运行时对它所管理的内存划分区域(为面试准备)
- 到底要不要考研?读完研究生就能找到好工作了吗?
- 对话阿里敏捷教练 | 成功辅导过淘宝、闲鱼,他都是如何帮助团队
- 数据的插入、更新、删除
- SharePoint2013升级SP1后,运行配置向导报错:未注册sharepoint服务
- Flink CDC 实时同步mysql
- Linux文件权限管理 chmod 读、写、可执行
- 【前端】【element】el-progress组件使用文档补充——大小调整与数字颜色
- linux常用软件推荐
- Qt在VS2012中引用QtWidgets时报GLES2/gl2.h无法打开错误的解决办法
- 各大Asp木马的万能密码
- 从零开始学USB(三、基础知识3)
- WinRAR 5.60 官方简体中文无广告弹窗版本
- 第10章 十字消除(《C和C++游戏趣味编程》配套教学视频)
- Windows10安装apt-cyg教程
- element-ui+vue,翻页添加首页、尾页跳转按钮
- web前端开发前景怎么样?2023年就业薪资能有多少?
- Android实现登录邮箱的自动补全功能
- 骨传导耳机排名前十名,列举排行靠前的几款骨感耳机
热门文章
- RDP远程登录 Windows server系统
- Sublime Text3批量更改文件内容
- 《蜘蛛侠:平行宇宙》的视觉解析与滤镜实现
- java语言的编译器_JAVA语言编译器是一个CASE工具。()。
- Cordova是什么
- 解决浏览器兼容新问题
- 为什么HashMap链表长度超过8会转成树结构
- (VKL系列)超低功耗LCD液晶显示驱动IC-VKL076 SSOP28,19*4 76点阵,超低工作电流约7.5微安,适用水电表/温湿度计/温控器/传感器等,FAE技术支持
- 《java编程思想》读书笔记【前言】
- HSV与RGB之间相互转换