[noip模拟]散步<dp>
题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=2097
这题A的时候,百感交集五味杂陈。。。。。。。。。。。。
就这么一道看起来简单的不得了的裸的一件内衣都不剩的dp我就卡了几天
唉,看来我这种蒟蒻是没有救了。
看完题后,有些朋友可能会和我一样去定义一个数组f[i,j,l,r]表示第一个人在i,j位置,第二个人在l,r位置
然后一看n是小于等于100就放心大胆的继续码代码下去了
但实际上这东西如果单纯循环不仅仅会爆时间,还要爆内存(题坑)
这道题其实很简单,首先你画个图 可以发现,其实在每一步上,两个人的坐标和相等,而且坐标和是从2到n*2,刚刚好要走1到2*n-1步;
我们来写一下这个坐标和吧
2 3 4 5
3 4 5 6
4 5 6 7
5 6 7 8
好吧这就是坐标规律,及在第i步的时候我们应该在坐标和为i+1的点上 注:两人都在1,1这个起始点的时候我们就算成这是第一步
好了知道这个obvious的规律后,我们就可以简简单单的定义一个三维的数组了
我们定义f[k][i][j]表示在坐标和为k的位置上,第一个人的横坐标为i,第二个人的横坐标是j
(当然定义方式不止一种,我只是个人喜好这一种,另外一种定义是在第k步时,第一人的横坐标为i,第二人的横坐标为j)
定义出来了,这个状态转移就更简单了
我的定义对应的状态转移方程是:f[k][i][j]=max{f[k-1][i][j],f[k-1][i-1][j],f[k-1][i][j-1],f[k-1][i-1][j-1]}+abs(val[i][k-i]-val[j][k-j]);
然后我再提一下另一种方程的定义方案:f[k][i][j]=max{f[k-1][i][j],f[k-1][i-1][j],f[k-1][i][j-1],f[k-1][i-1][j-1]}+abs(val[i][k-i+1]-val[j][k-j+1]);
区别不大,只是在对应的纵坐标时有区别而已
然后这就是这道水出天际的题的解了
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cstdlib>
#define maxn 105
using namespace std; int n,val[maxn][maxn],f[maxn*][maxn][maxn]; int ma(int a,int b,int c,int d)
{
return max(max(a,b),max(c,d));
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
scanf("%d",&val[i][j]);
f[][][]=;
for(int k=;k<=*n;k++)
for(int i=;i<k;i++)
for(int j=;j<k;j++)
{
int iy=k-i,jy=k-j;
f[k][i][j]=ma(f[k-][i-][j-],f[k-][i-][j],f[k-][i][j-],f[k-][i][j])+abs(val[i][iy]-val[j][jy]);
}
printf("%d",f[*n][n][n]); }
[noip模拟]散步<dp>的更多相关文章
- NOIP模拟 回文序列 - DP
题意: 如果一个字符串等于s和t的长度之和(\(l \le 50\)),并且可以拆成两个字符串子序列,分别与s和t相同,那么它就是s和t的一个并字符串(从字符串中选出若干个可以不连续的字符按照原序列写 ...
- 【noip模拟赛5】细菌 状压dp
[noip模拟赛5]细菌 描述 近期,农场出现了D(1<=D<=15)种细菌.John要从他的 N(1<=N<=1,000)头奶牛中尽可能多地选些产奶.但是如果选中的奶牛携 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
- 2018.9.22 NOIP模拟赛
*注意:这套题目应版权方要求,不得公示题面. 从这里开始 Problem A 妹子 Problem B 旅程 Problem C 老大 因为业务水平下滑太严重,去和高一考NOIP模拟,sad... P ...
随机推荐
- vue+element tree(树形控件)组件(1)
最近做了第一个组内可以使用的组件,虽然是最简版,也废了不少力.各位前辈帮我解决问题,才勉强搞定.让我来记录这个树形组件的编写过程和期间用到的知识点. 首先说说需求,就是点击出现弹窗+蒙板,弹窗内容是一 ...
- docker部署tensorflow serving以及模型替换
Using TensorFlow Serving with Docker 1.Ubuntu16.04下安装docker ce 1-1:卸载旧版本的docker sudo apt-get remove ...
- java线程间的共享
本次内容主要讲synchronized.volatile和ThreadLocal. 1.synchronized内置锁 线程开始运行,拥有自己的栈空间,就如同一个脚本一样,按照既定的代码一步一步地执行 ...
- ZTMap室内地图定位平台设计方案
1 系统总体设计 1.1 系统概述 基于臻图信息室内GIS地图平台和室内定位平台,通过室内定位设备的部署和信号采集,实现对室内人员和资产的实时定位.路线导航.区域管控告警.客流统计等相关功能. ...
- 简单易用的图像解码库介绍 —— stb_image
原文链接:简单易用的图像解码库介绍 -- stb_image 说到图像解码库,最容易想起的就是 libpng 和 libjpeg 这两个老牌图像解码库了. libpng 和 libjpeg 分别各自对 ...
- 安装ArchLinux时遇到的部分问题
目录 一.网络问题 1.安装刚开始时连接wifi 2.安装完桌面后 二.卸载gnome桌面 三.启动桌面(以kde桌面为例) 1.立即启动桌面(start , stop) 2.设置开启自启动 (ena ...
- MyISAM 和 InnoDB
1.MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级 ...
- TLS/SSL 梳理
数据加密通篇都是为了防止第三方的劫持伪造,保证连接安全, 毫无遮掩的明文传输只有民风淳朴的时候才是安全的. 先是一些基础的内容: 对称加密 最开始为了对数据进行加密,使用的是对称加密算法,即双方协商好 ...
- 深入理解yield from语法
本文目录 为什么要使用协程 yield from的用法详解 为什么要使用yield from . 为什么要使用协程# 在上一篇中,我们从生成器的基本认识与使用,成功过渡到了协程. 但一定有许多人,只知 ...
- scrapy启动
创建项目 在开始爬取之前,您必须创建一个新的Scrapy项目. 进入您打算存储代码的目录中,运行下列命令: scrapy startproject scrapytest 第一种scrapy gensp ...