10月27日备战Noip2018模拟赛11(B组)

T4路径好路线

题目描述

nodgd在旅游。现在,nodgd要从城市的西北角走到东南角去。这个城市的道路并不平坦,nodgd希望找出一条相对比较好走的路
.nodgd事先已经得到了这个城市的地图。地图上这个城市是一个nxm的矩形,nodgd现在站在坐标为(1,1)的位置,需要到达坐标为(n,m)的位置。这张地图上用非负整数标记了每个整数坐标点的海拔,坐标为(x,y)的位置的海拔是h(x,y).nodgd希望找出一条路线,路线中任意时刻都在向正东或向正南走,而且只在整数坐标点的地方转弯,使得路上经过的n + m -1个整数坐标点的海拔的方差最小。然而万能的nodgd当然知道该怎么走,也当然知道方差最小是多少,只是想顺便考考你。假如
有ķ个实数X1,X2,...,XK,平均值则定义为
                                               

方差的定义为

本题为了方便,只需输出的值就可以了

输入格式

第一行输入两个整数N,M,表示城市的大小。

接下来Ñ行,每行米个数,其中第X行第ý个数就是H(X,Y)。

输出格式

输出一行一个整数,表示的最小值。

输入样例

2 2
1 2
3 4

输出样例

14

样例解释

有两条路1-2-4和1-3-4,方差都等于14/9,所以方差最小值是14/9,输出14。

数据范围

对于30%的数据,1≤n,m≤10;

对于50%的数据,1≤n,m≤20;

对于100%的数据,1≤n,m≤50,0≤h(X,Y)≤50


思路

DP

dp [i] [j] [k]表示在第i行,第j列,海拔和为k的海拔的平方的最大和

dp [i] [j] [k] = min(dp [i] [j - 1] [k - h [i] [j]],dp [i - 1] [j] [k - h [i] [j]])+ h [i] [j] * h [i] [j];

至于平方和和方差之间的关系,稍微算一算就十分显然了。

代码

#include <iostream>
#include <cstdio>using namespace std;const int MAXN = 55;
const int MAXS = 5005;
const int INF = 0x3fffffff;int n, m, tmp, last;
int dp[MAXN][MAXN][MAXS];
int h[MAXN][MAXN], Max[MAXN][MAXN], Min[MAXN][MAXN];
long long ans;inline int read ();int  main ()
{freopen("path.in", "r", stdin);freopen("path.out", "w", stdout);n = read (), m = read ();for (int i = 1; i <= n; ++ i){for (int j = 1; j <= m; ++ j){h[i][j] = read ();Max[i][j] = max (Max[i - 1][j], Max[i][j - 1]) + h[i][j];Min[i][j] = min (Min[i - 1][j], Min[i][j - 1]) + h[i][j];}}for (int i = 0; i <= n; ++ i){for (int k = 0; k <= Max[n][m]; ++ k){dp[i][0][k] = INF;}}for (int j = 0; j <= m; ++ j){for (int k = 0; k <= Max[n][m]; ++ k){dp[0][j][k] = INF;}}dp[0][1][0] = 0;dp[1][0][0] = 0;ans = 9223372036854775800;for (int i = 1; i <= n; ++ i){for (int j = 1; j <= m; ++ j){tmp = h[i][j] * h[i][j];for (int k = 0; k < Min[i][j]; ++ k){dp[i][j][k] = INF;}for (int k = Max[i][j] + 1; k <= Max[n][m]; ++ k){dp[i][j][k] = INF;}for (int k = Min[i][j]; k <= Max[i][j]; ++ k){last = k - h[i][j];dp[i][j][k] = min (dp[i - 1][j][last], dp[i][j - 1][last]) + tmp;}}}for (int k = Min[n][m]; k <= Max[n][m]; ++ k){//printf ("ans = %d, k = %d\n", ans, k);//printf ("dp[n][m][k] = %d\n", dp[n][m][k]); ans = min (ans, 1ll * dp[n][m][k] * (n + m - 1) - 1ll * k * k);}printf ("%d", ans);fclose(stdin);fclose(stdout);return 0;} inline int read ()
{char ch = getchar ();while (!isdigit (ch)) ch = getchar ();int x = 0;while (isdigit (ch)) {x = x * 10 + ch - '0';ch = getchar ();}return x;
}

备战Noip2018模拟赛11(B组)T4 Path 好路线相关推荐

  1. 备战Noip2018模拟赛20 (A组) T1 Cz 礼物

    10月24日备战Noip2018模拟赛20(A组) T1 Cz礼物 题目描述 有Ñ种物品,第I种物品的价格为六,每天最多购买XI个. 有米天,第我天c♂x有无线的钱,他会不停购买能买得起的最贵的物品( ...

  2. 备战Noip2018模拟赛3(B组)T1 Apple 韬韬抢苹果

    10月3日备战Noip2018模拟赛3(B组) T1 Apple韬韬抢苹果 题目描述 又到了收获的季节,树上结了许多韬韬,错了,是许多苹果,有很多个小韬韬都来摘苹果.每个韬韬都想要最大的苹果,所以发生 ...

  3. 备战Noip2018模拟赛3(B组) T2 Dance 开场舞蹈

    10月3日备战Noip2018模拟赛3(B组) T2 Dance 开场舞蹈 题目描述 在全世界人民的期盼下,2008年北京奥林匹克运动会终于隆重召开了! 为了展示中华民族博大精深的优秀传统文化,负责开 ...

  4. 备战Noip2018模拟赛5(B组)T2 Tree 采果子

    10月4日备战Noip2018模拟赛5(B组) T2 Tree采果子 题目描述 LYL大牛今天心情不错,于是走到埃及郊外旅游.他边走边向四周望望,发现周围有许多果树.这些树之间互相到达的时间LYL是知 ...

  5. 备战Noip2018模拟赛7(B组)T2 Pearl 数数

    10月5日备战Noip2018模拟赛7(B组) T2珍珠数 题目描述 给定Ñ个整数,求值在某个范围内的数的个数. 输入格式 第一行为正整数ñ. 第二行有Ñ个整数(0 <=数值<= 231- ...

  6. 备战Noip2018模拟赛7(B组)T1 Voting 兔子选举

    10月5日备战Noip2018模拟赛7(B组) T1 Voting 兔子选举 题目描述 兔子常常感到孤独,所以一组的兔子决定走到一起,并举行选美比赛,以确定它们之间谁拥有最漂亮的耳朵.规则如下: 每只 ...

  7. 备战Noip2018模拟赛10(B组) T1 Max 和最大

    10月20日备战Noip2018模拟赛10 T1 Max和最大 题目描述 CYF的黑题,偏题,怪题,黑科技题,大码农题都做腻了,于是她想做一下签到水题,她希望从有一个长度为ň的整数序列(A1,A2,. ...

  8. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  9. 【蓝桥杯Web】大一小白参与蓝桥杯模拟赛二期web组体会

    目录 前言 一.相关比赛介绍 1.ACM国际大学生程序设计竞赛 2.蓝桥杯 3.GPLT团队程序设计天梯赛 4.leetcode周赛和双周赛 5.PAT 二.蓝桥杯 1.应该参加蓝桥杯吗? 2.如何进 ...

最新文章

  1. ThreadLocalRandom 安全吗
  2. 通达oa oracle数据库,通达OA 2016系统连接ORACLE 11g数据库(图文)
  3. JUC多线程:Atomic原子类与CAS原理
  4. 11.11 ntsysv:管理开机服务
  5. 进程控制2--exec族
  6. morse java_华威MORSE,华威数统那个比较好?
  7. MAC 下使用ipv6、ipv4观看电视、网络电视
  8. Shiro Shiro Web Support and EnvironmentLoaderListener
  9. 多线程下的进程同步(线程同步问题总结篇)
  10. 无论你是用什么样的模式去拓展市场
  11. exchange邮箱服务器端追踪某用户发送的邮件(发送状态、时间、主题等等信息)
  12. python中如何导入数据包_如何在python中发送数据包?
  13. 共享文件服务器密码更换,服务器共享文件密码
  14. u盘读写速度变慢了开始快后面特别慢卡顿解决方法
  15. 【短视频运营】抖音推送机制 | 账号 “ 完播率 “ 数据
  16. 直流无刷电机的一些介绍
  17. linux pipe命令,Linux入门教程:Linux下的pipe命令
  18. 云服务器被攻击了怎么解决
  19. 护肤品html作业,聚美优品美容产品热点.html
  20. 5G通信技术及技术特点

热门文章

  1. 基于FTP协议实现文件上传与下载
  2. Zygote简要分析
  3. 操作系统实验 - 题目三 P、V原语的模拟实现(消费者问题)
  4. 【Appium】验证appium环境搭建是否成功并考虑脚本需要包含的参数
  5. [转]写一个块设备驱动(第六章)
  6. Linux系统安装jdk教程(超级详细)
  7. VScode Debug 配置了launch.json却进不去断点,运行debug所有断点变灰
  8. vim批量注释或vim批量行首添加内容的两种方法
  9. python的format函数的用法及实例
  10. 视频教程-虚幻4 VR开发指南-其他