NOJ——1568走走走走走啊走(超级入门DP)
[1568] 走走走走走啊走
- 时间限制: 1000 ms 内存限制: 65535 K
- 问题描述
菜菜赚了钱回来,想起要买很多桶回来,不同地方的桶质量是不同的,他在(1,1)点出发因为飞机票有点贵所以他只能向我们的所在地(n,m)处移动,也就是只能向右和下移动,
我们有的桶可能吃腻了所以(i,j)点的值可取可不取;但是菜菜自己也会饿所以在某些城市会吃掉一部分,甚至先透支一部分,所以a(i, j)可以为负,
为了犒劳我们他尽可能会多带一点问他最多带多少质量回来
- 输入
- 输入n,m (n,m <= 1000)
再输入n行m列值A(i,j) A(i,j)在 - 1000 ~ 1000 之间。而且A(i,j)可以取可以不取.只能往右或者往下走。
问你,从左上角走到右下角,可以得到的最大值是多少。 - 输出
- 输出最大值
- 样例输入
3 3
1 2 3
4 5 6
4 8 9- 样例输出
27
- 提示
1 -> 4 -> 5 -> 8 -> 9
原理跟数塔比较像,四种状态:上面和左边走过来(2) * 取或不取(2)。
代码:
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<sstream>
#include<cstring>
#include<cstdio>
#include<string>
#include<deque>
#include<stack>
#include<cmath>
#include<queue>
#include<set>
#include<map>
using namespace std;
typedef long long LL;
#define INF 0x3f3f3f3f
int pos[1010][1010];
int dp[1010][1010];
int main(void)
{
int n,m,temp,i,j;
while (~scanf("%d%d",&n,&m))
{
memset(pos,0,sizeof(pos));
memset(dp,0,sizeof(dp));
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
scanf("%d",&pos[i][j]);
}
}
dp[0][0]=pos[0][0];//这里要用条件初始化
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
dp[i][j]=max(dp[i-1][j],max(dp[i][j-1],max(pos[i][j]+dp[i-1][j],pos[i][j]+dp[i][j-1])));
}
}
printf("%d\n",dp[n-1][m-1]);
}
return 0;
}
NOJ——1568走走走走走啊走(超级入门DP)的更多相关文章
- 关于PCB走线能不能走锐角的讨论
(此文参考吴川斌的博客) 很多PCB工程师都知道Layout走线时忌走直角,那么锐角能走吗? 回答当然是否定的!为什么呢? 这里先不说锐角对高速信号走线会不会造成负面影响,单从PCB DFM(可制造性 ...
- Knight's Trip---hdu3766(马走日求最小走的步数)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3766 给你一个x ,y 求出从(0,0)位置到达需要的最小步数每次只能走日型: 下图为暴力bfs得到的 ...
- LOJ 2542 「PKUWC2018」随机游走 ——树上高斯消元(期望DP)+最值反演+fmt
题目:https://loj.ac/problem/2542 可以最值反演.注意 min 不是独立地算从根走到每个点的最小值,在点集里取 min ,而是整体来看,“从根开始走到点集中的任意一个点就停下 ...
- n个台阶,每次都可以走一步,走两步,走三步,走到顶部一共有多少种可能
分析 第一个台阶 1第二个台阶 11 2 //走两次1步或者走1次两步第三个台阶 111 12 21 3 第四个台阶 1111 112 121 211 22 13 31 思想:4阶台阶, ...
- HDU 5418 Victor and World (可重复走的TSP问题,状压dp)
题意: 每个点都可以走多次的TSP问题:有n个点(n<=16),从点1出发,经过其他所有点至少1次,并回到原点1,使得路程最短. 思路: 给了很多重边,选最小的留下即可.任意点可能无法直接到达, ...
- 走一步再走一步,揭开co的神秘面纱
前言 原文地址 源码地址 了解co的前提是已经知晓generator是什么,可以看软大神的Generator 函数的语法,co是TJ大神写的能够使generator自动执行的函数库,而我们熟知的koa ...
- 【NOIP模拟赛】超级树 DP
这个题我在考试的时候把所有的转移都想全了就是新加一个点时有I.不作为II.自己呆着III.连一个IV.连接两个子树中的两个V连接一个子树中的两个,然而V我并不会转移........ 这个题的正解体现了 ...
- POJ 1157 LITTLE SHOP OF FLOWERS (超级经典dp,两种解法)
You want to arrange the window of your flower shop in a most pleasant way. You have F bunches of flo ...
- NOJ 1111 保险箱的密码 【大红】 [区间dp]
传送门 保险箱的密码 [大红] 时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte总提交 : 118 测 ...
随机推荐
- groups - 显示用户所在的组
总览 (SYNOPSIS) groups [OPTION]... [USERNAME]... 描述 (DESCRIPTION) --help 显示此帮助, 然后退出 --version 显示版本信息, ...
- Spring boot 集成 Dubbo 快速搭建
架构: 1.ZooKeeper:服务注册中心 2.api工程:提供对外暴露的服务API 3.provider:服务提供者 4.consumer:服务消费者 示例如下: (一)新建 Maven 项目 a ...
- Tarjan 详解
Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度. 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连 ...
- JsonPath 语法 与 XPath 对比
JsonPath 语法 与 XPath 对比 XPath JSONPath Description / $ the root object/element . @ the current obje ...
- 关于java字符串常量池
今天发现一个好玩的东西 public static void main(String[] args) { String str1 = new StringBuilder(" ...
- PAT (Basic Level) Practise (中文)- 1011. A+B和C (15)
http://www.patest.cn/contests/pat-b-practise/1011 给定区间[-231, 231]内的3个整数A.B和C,请判断A+B是否大于C. 输入格式: 输入第1 ...
- retain, copy, assign以及autorelease
一,retain, copy, assign区别 1. 假设你用malloc分配了一块内存,并且把它的地址赋值给了指针a,后来你希望指针b也共享这块内存,于是你又把a赋值给(assign)了b.此时a ...
- [].indexOf.call()学习
今天看到闭包一道题,就是一个li列表,点击列表控制台输出对应的索引.这里考察了var的作用域问题和闭包对外部变量的引用问题,有几种解决方法. html: <ul> <li>te ...
- 【离线 撤销并查集 线段树分治】bzoj1018: [SHOI2008]堵塞的交通traffic
本题可化成更一般的问题:离线动态图询问连通性 当然可以利用它的特殊性质,采用在线线段树维护一些标记的方法 Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常 ...
- 洛谷 1571 眼红的Medusa
洛谷 1571 眼红的Medusa 虽说这道题标签里写明了二分,然而我还是首先想到了map......毕竟map真的是简单好写. map做法 #include<bits/stdc++.h> ...