[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 ...
随机推荐
- Django+Nginx+Uwsgi环境配置
nginx.conf : server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.acces ...
- py装饰器,生成器,迭代器
emmmmm....看了好久才能大概的看懂一点关于装饰器的内容...import sys # 引入sys模块import timeimport functoolsfrom functools impo ...
- C++泛化双向链表
泛型双向链表 双向链表(doublyLinkedList.h) /******************************************************************* ...
- python正则表达式之re模块使用
python第一个正则表达式 https://www.imooc.com/learn/550 r'imooc' Pattern Match result In [2]: import re In [ ...
- javascript中this指向的问题
javascript中this只有函数执行时候才能确定到底指向谁,实际this最终指向是那个调用它的对象. 1,匿名函数中的this——window function foo(){ var lastN ...
- JavaScript的函数(一)
,1,在javascript中,函数即对象.函数里面的参数可以是个函数,例如: data.sort(function(a,b){return a-b;}) 函数的返回值,return语句导致函数停止执 ...
- 详细解析kafka之kafka分区和副本
本篇主要介绍kafka的分区和副本,因为这两者是有些关联的,所以就放在一起来讲了,后面顺便会给出一些对应的配置以及具体的实现代码,以供参考~ 1.kafka分区机制 分区机制是kafka实现高吞吐的秘 ...
- 编译putty 源码去掉 Are you sure you want to close this session? 提示
0, 为什么要编译 putty ?在关闭窗口的时候,会弹出一个 Are you sure you want to close this session?要把这个去掉.当然也可以用 OD 之类的来修改. ...
- h5 移动端适配方案思考
基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ...
- Hadoop集群搭建(四)~centos6.8关闭防火墙
一.centos关闭防火墙 1,关闭防火墙.service iptables stop 2,关闭防火墙开机自启.chkconfig iptables off 3,查看防火墙状态.service ipt ...