当前位置: 首页 > news >正文

关于公司网站建设情况的汇报网站建设公司网

关于公司网站建设情况的汇报,网站建设公司网,php管理系统,江苏建设通网站http://poj.org/problem?id1088 这是一道dp入门题#xff0c;不过我一直没想明白应该怎么dp。今天#xff0c;在做自己学校oj的算法基础题时看到这题#xff0c;标注着dp的分类#xff0c;加上我一直都比较喜欢做dp题#xff0c;于是我就决心今晚要把这道入门题切了。 题…http://poj.org/problem?id1088   这是一道dp入门题不过我一直没想明白应该怎么dp。今天在做自己学校oj的算法基础题时看到这题标注着dp的分类加上我一直都比较喜欢做dp题于是我就决心今晚要把这道入门题切了。   题目是中文的题目大意就免了吧……   晚上做dp题的时候我先是看见类似这题的一维单调增子序列那题轻松AC了。但是面对这个我隔了很长时间没想的二维dp题我想了很久都想不到怎么dp。因为这题在我们学校的oj里是全部计算机专业都要知道怎么做的所以题目下面有详细的解释而且觉得那个题解是相当的浅显易懂。 下面是那个解释 动规算法思路: f矩阵与原高度矩阵一样大小f(i,j)表示从(i,j)位置开始滑可以获得的最大滑道的长度。算法步骤 1将高度矩阵从低到高排序 2按滑点从低到高依次计算最长滑道的长度存于f(i,j)。 3f(i,j)中的最大值即原题所求。  我依据它的描述以及我对这题的了解解释一遍  我们需要的是一个用来储存原本高度的二维数组一个用来记忆dp状态的数组以及一个储存高度以及该高度所在的坐标的结构体数组。先说明一下我是为了方便自己所以除了结构体数组外其他两个数组都是开大了的。因为poj的题目中数据是0h10000所以我用-1作为图的边界条件dp数组正常清零。为了方便遍历四个邻接的坐标所以我定义了四个方向向量。    读入数据的时候数据要被处理放到相应的结构类型中。  然后在核心处理前我们的dp需要一个高度单调增大的但是对应的坐标不会改变。结构体整块的数据移动就可以保留上述预处理的高度块的坐标。这里可以直接用qsort进行对高度的快排。这个预处理是后面dp的关键。    在预处理后由低到高处理每个高度块所指示的坐标。对于每一个坐标搜索该坐标周围的dp最大值dp值的含义是从该点出发最长可以滑多远那么被处理的高度块其dp值就是上述最大值加一。然后为什么可以这样做就是理解整道题的关键。  可能会有人有这样的疑问在处理的时候刚开始周围的点不是还没知道dp值吗为什么也可以直接利用  解答这个问题的关键就在于我们刚开始的时候dp矩阵已经清零。假设从第一个坐标开始显然这个坐标是最矮的高度块所对应的坐标所以在这周围四块不存在比它矮的那么一块所以它的dp值是1。同时我们观察到这时周围四块的dp值都是0所以这块必定会变为1。其他的也同理如果周围存在比当前块高的块那么这个块肯定是还没被赋值的也就是默认的0。就是说当前块无法继承这个比自己要高的块的dp值。此时为0是合理的    找到所有dp值中的最大值后输出。  这题我wa了几次主要是刚开始没想到周围的高度块是允许比当前的大的所以一个大小符号导致我浪费了不少时间。   下面是我的代码 View Code 1 #include stdio.h2 #include string.h3 #include math.h4 #include stdlib.h5 6 #define Reset(a) memset(a, 0, sizeof(a))7 #define MAX 10000000008 9 int dir[4][2]{{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; 10 11 struct high 12 { 13 int x, y; 14 int h; 15 }; 16 17 int cmp(const void *_a, const void *_b) 18 { 19 struct high a*(struct high *)_a; 20 struct high b*(struct high *)_b; 21 22 return a.h-b.h; 23 } 24 25 int main() 26 { 27 int n, m; 28 while (~scanf(%d%d, n, m)) 29 { 30 int h[n2][m2], dp[n2][m2]; 31 struct high rec[n*m]; 32 33 memset(h, 255, sizeof(h)); 34 for (int i1; in; i) 35 for (int j1; jm; j) 36 { 37 scanf(%d, h[i][j]); 38 rec[(i-1)*mj-1].hh[i][j]; 39 rec[(i-1)*mj-1].xi; 40 rec[(i-1)*mj-1].yj; 41 } 42 Reset(dp); 43 qsort(rec, n*m, sizeof(struct high), cmp); 44 int ans0; 45 for (int i0, tmpn*m; itmp; i) 46 { 47 int max0; 48 49 for (int j0; j4; j) 50 { 51 if (max dp[rec[i].x-dir[j][0]][rec[i].y-dir[j][1]]1 52 h[rec[i].x-dir[j][0]][rec[i].y-dir[j][1]]!h[rec[i].x][rec[i].y]) 53 max dp[rec[i].x-dir[j][0]][rec[i].y-dir[j][1]]1; 54 dp[rec[i].x][rec[i].y] max; 55 } 56 if(ansmax) 57 ansmax; 58 } 59 /** 60 for (int i1; in; i) 61 { 62 for (int j1; jm; j) 63 printf(%4d , dp[i][j]); 64 puts(); 65 } 66 /**/ 67 printf(%d\n, ans); 68 } 69 70 return 0; 71 }    转载于:https://www.cnblogs.com/LyonLys/archive/2012/04/27/poj_1088_Lyon.html
http://wiki.neutronadmin.com/news/43525/

相关文章:

  • python 做下载网站怎么样做团购网站
  • layui做网站前端徐州百度推广
  • 昆山建设局网站查预售如何快速收录一个网站的信息
  • 有哪些做数据分析的网站做班级相册网站的目的意义
  • 阿里云国际站官网网站建设解析
  • 住房和城乡建设部的网站wordpress和drupal
  • 搜索视频 网站开发北海做网站的公司
  • 深圳电商网站制作没有公网ip建设网站
  • 北京大兴企业网站建设咨询百度小程序可以根据网站的要求做吗
  • lamp网站开发微软软件开发工程师待遇
  • 简单的招聘网站怎么做网站搜索工具
  • 河池个人网站开发公司深圳设计公司 电话
  • 网站域名跟谁买电商网站首页模板
  • 域名备案查询站长之家网络公司代理
  • 济南营销网站制作公司哪家好电子商务网站建设基础
  • 网站的seo后台怎么做实时新闻最新消息
  • 重庆网站建设就选承越勉费申请做网站
  • wordpress打开网站前动画商家免费入驻平台
  • 查公司查企业用什么网站ui培训班 千锋
  • 有没类似建设通的免费网站大型门户网站是这样炼成的源代码
  • 哪里有网站设计的公司网站前期定位
  • 壹佰网站建设怎么做推广让别人主动加我
  • 哈尔滨模版建站公司推荐怎么判断一个网站做的好不好
  • 麒麟区住房和城乡建设局网站40个免费网站推广平台下载
  • 个人网站有备案吗个人网上怎么接装修活
  • 可以接单做3d网站怎么查看自己网站是否被收录
  • 网站培训机构有哪些免费软件是一种不需付费就可取得
  • 19楼网站模板杭州 网站建站
  • 广州专业网站建设哪里有找阿里巴巴购买做网站的软件
  • 网站开发南城科技大厦那个平台的网页游戏好玩