描述

这次,OI山成为了雷曼兔那无尽的冒险传说的新舞台!传说OI山中埋藏着巨大的宝藏,伴随着这个传说的是一个迷题:最瑰丽的舞者将达至精灵世界的彼岸……
经过仔细推敲,雷曼兔发现这是一个提示宝藏埋藏位置的谜语,在该谜语中指出了一个特定的路径,只有经过了该路径宝藏才会出现,具体情况如下:
OI山的地势图可以看作一个N*N的数字矩阵,由1-N^2的数字组成(每个数字出现且仅出现一次),这些数字表示每个地点的地势高低。雷曼兔的出发点在最高的山顶处,并且每次雷曼兔可以从其当前所在的位置跳跃到任何一个比当前地点高度低的位置,假设雷曼兔该次跳跃从坐标(x1,y1)跳到了坐标(x2,y2),则这次跳跃的华丽度定义为v=(|x1-x2|+|y1-y2|)^2。而开启宝藏秘密的路径就是从山顶不断跳跃直到山底(高度最低点)的华丽度总和最高的路径,而现在我们想要知道的是这个最高的华丽度总和是多少

格式

输入格式

第一行包括一个整数n(n<=50)表示地图的长宽。

接下来n行每行包括n个数表示每个地点的高度。

输出格式

输出包括一个整数ans,表示从山顶到山底最高华丽度总和

样例1

样例输入1[复制]

2
3 2
1 4

样例输出1[复制]

9

提示

最优路径为4->3->2->1,得分为4+1+4=9。

思路:因为个N*N的数字矩阵,由1-N^2的数字组成(每个数字出现且仅出现一次),所以用一个二维数组一边读入数据一边把数据的值,横坐标,纵坐标保存下来。

dp[i]表示从i层到最底层的最大华丽度总和,先初始化为从i层直接到1层的华丽度。然后DP一下就能求得最大的dp[i]了。因为跳跃的华丽度定义为v=(|x1-x2|+|y1-y2|)^2,所以数值总是大于等于0的。因此dp[n*n]必然是最大的。

动态转移方程:dp[i]=max{dp[j]+v} (v为从i层跳到j层的华丽度,其中i>j)

#include<iostream>
#include<cmath>
using namespace std;
int s[2700][3], dp[2700];
int ABS(int i, int j)
{
return (abs(s[i][1] - s[j][1]) + abs(s[i][2] - s[j][2]))*(abs(s[i][1] - s[j][1]) + abs(s[i][2] - s[j][2]));
}
int main()
{
int n;
while (cin >> n)
{
int num;
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= n; j++)
{
cin >> num;
s[num][0] = num;
s[num][1] = i;
s[num][2] = j;
}
}
for (int i = n*n; i > 0; i--)
{
dp[i] = ABS(i, 1);
}
for (int i = 2; i <= n*n; i++)
{
int max = dp[i];
for (int j = 1; j < i; j++)
{
if (max < dp[j] + ABS(i, j))
{
max = dp[j] + ABS(i, j);
}
}
dp[i] = max;
}
cout << dp[n*n] << endl;
}
return 0;
}

Vijos P1474雷曼兔(csapc)相关推荐

  1. 雷曼兔(csapc)

    这里算不上dp吧.直接输入设置就能行了. P1474雷曼兔(csapc) 未递交 标签:动态规划 LIScsapc 描述 这次,OI山成为了雷曼兔那无尽的冒险传说的新舞台!传说OI山中埋藏着巨大的宝藏 ...

  2. VIJOS-P1474 雷曼兔(csapc)

    JDOJ 1532: VIJOS-P1474 雷曼兔(csapc) https://neooj.com/oldoj/problem.php?id=1532 Description 这次,OI山成为了雷 ...

  3. Vijos 雷曼兔(csapc)

    描述 这次,OI山成为了雷曼兔那无尽的冒险传说的新舞台!传说OI山中埋藏着巨大的宝藏,伴随着这个传说的是一个迷题:最瑰丽的舞者将达至精灵世界的彼岸-- 经过仔细推敲,雷曼兔发现这是一个提示宝藏埋藏位置 ...

  4. [vijos1474] 雷曼兔(csapc)

    题目描述 这次,OI山成为了雷曼兔那无尽的冒险传说的新舞台!传说OI山中埋藏着巨大的宝藏,伴随着这个传说的是一个迷题:最瑰丽的舞者将达至精灵世界的彼岸-- 经过仔细推敲,雷曼兔发现这是一个提示宝藏埋藏 ...

  5. BSOJ2909 Vijos 1474 南邮OJ1573 雷曼兔

    2909 -- [模拟试题]雷曼兔 Description 这次,OI山成为了雷曼兔那无尽的冒险传说的新舞台!传说OI山中埋藏着巨大的宝藏,伴随着这个传说的是一个迷题:最瑰丽的舞者将达至精灵世界的彼岸 ...

  6. 南邮 OJ 1573 雷曼兔

    雷曼兔 时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte 总提交 : 40            测试通过 : 12 比赛描 ...

  7. BSOJ:2909 雷曼兔 DP

    2909 -- [模拟试题]雷曼兔 Description 这次,OI山成为了雷曼兔那无尽的冒险传说的新舞台!传说OI山中埋藏着巨大的宝藏,伴随着这个传说的是一个迷题:最瑰丽的舞者将达至精灵世界的彼岸 ...

  8. VJ 1474 雷曼兔

    描述 这次,OI山成为了雷曼兔那无尽的冒险传说的新舞台!传说OI山中埋藏着巨大的宝藏,伴随着这个传说的是一个迷题:最瑰丽的舞者将达至精灵世界的彼岸-- 经过仔细推敲,雷曼兔发现这是一个提示宝藏埋藏位置 ...

  9. 雷曼兔(vijos1474)

    算法:DP 数据中的每个数竟然都是连续且不重复的,这一点遗漏了,导致想到了很复杂的算法,复杂到连我自己都不知道怎么做了-- program vijos1474; const maxn=2500; va ...

最新文章

  1. 如何在Python中获取字符串的子字符串?
  2. wireshark抓取https并解密方法一
  3. 新旧apache HttpClient 获取httpClient方法
  4. geoserver的api接口_geoserver REST使用
  5. 005 form组件---基本使用.
  6. Linux基础学习八:mysql主从复制原理以及详细搭建步骤
  7. 无法执行任何java命令,报错OutOfMemoryError: Cannot create GC thread. Out of system resources
  8. 不同表结构数据迁移_C语言:数据结构-广义表的存储结构
  9. linux 查看libevent 安装目录,关于Linux下libevent库的基础安装和使用
  10. Android实现局部图片滑动指引效果
  11. Oracle 密码过期
  12. SiamFC代码讲解,推理测试讲解
  13. PyTorch: Conv2d and ConvTranspose2d
  14. 5不触发系统键盘_防盗报警系统基础知识汇总
  15. Android从上往下滑动或从下往上滑动结束Activity
  16. 全球对冲基金及其投资策略解析
  17. vue中防止按钮重复点击提交的方法
  18. Face Attention Network: An Effective Face Detector for the Occluded Faces
  19. 华为荣耀8电信卡显示无服务器,华为荣耀手机实现双电信卡双待双通,5步告诉你真相...
  20. cisco pkt 路由器配置基础及接口配置 路由协议与交换技术

热门文章

  1. 读书笔记:《洛克菲勒写给儿子的38封信》
  2. Springboot项目使用jdk17启动报错:module java.base does not “opens java.lang.invoke“
  3. 码云线上误删主项目文件夹的恢复
  4. 李航统计学习方法 Chapter2 感知机
  5. 网络经济与企业管理【八】之人力资源管理
  6. 黑客攻防技术宝典-Web实战篇——第二章、核心防御机制(一)
  7. 「Photoshop2021入门教程」创建A4尺寸打印文档
  8. “O2O到家业务”的布局起点:选对商业模式很重要
  9. 【Python深度学习】基于Tensorflow2.0构建CNN模型尝试分类音乐类型(二)
  10. 景德镇特色的部门级别与权限