分析:

对于网格grid[i][j]如果放向上的管道,那么grid[i][k], k>j 就只能放向上的管道了。

那么定义dp[i][j]表示第i行,最后一个放向左的管道是j的最大总矿量。

j = 0表示全放向上,j = m表示全放向左。

如果grid[i][j]要往放向上的管道的话,前提是grid[i-1][j]也要是向上的管道。

因此转移为dp[i][j] = max(dp[i-1][k]+sumA(1,j)+sumB(j+1,n) ), k >= j

对于N= 500这样的规模,转移有点慢。

对于sumA,sumB可以处理前缀和,

对于max(dp[i-1][k]),利用max的传递性优化

递推 max(dp[i-1][k]) = max(max(dp[i-1][k-1]),dp[i-1][k])

复杂度O(n*m)

窝觉得如果不是在做动态规划的专题窝可能不会往这方面去想。

#include<bits/stdc++.h>
using namespace std; const int N = ;
int A[N][N], B[N][N];
int dp[N][N]; //#define LOCAL
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif
int n,m;
while(scanf("%d%d",&n,&m),n){
for(int i = ; i <= n ;i++){
for(int j = ; j <= m; j++){
scanf("%d",A[i]+j);
A[i][j] += A[i][j-];
}
}
for(int i = ; i <= n ;i++){
for(int j = ; j <= m; j++){
scanf("%d",B[i]+j);
B[i][j] += B[i][j-];
}
}
for(int j = ; j <= m; j++){
dp[][j] = A[][j] + B[][m] - B[][j];
}
for(int i = ; i <= n; i++){
dp[i][] = dp[i-][];
for(int j = ; j <= m; j++){
dp[i][j] = max(dp[i][j-],dp[i-][j]);
}
for(int j = ; j <= n; j++){
dp[i][j] += A[i][j] + B[i][m] - B[i][j];
}
}
int ans = ;
for(int j = ; j <= m; j++){
ans = max(ans,dp[n][j]);
}
printf("%d\n",ans);
}
return ;
}

UVALive 3530 Martian Mining(贪心,dp)的更多相关文章

  1. UVaLive 3530 Martian Mining (简单DP)

    题意:给定一个n*m的网格,每个格子里有A矿和B矿数量,A必须由右向左运,B只能从下向上运,中间不能间断,问最大总数量. 析:一个简单DP,dp[i][j] 表示 从 (0, 0) 到 (i, j) ...

  2. POJ 2948 Martian Mining(DP)

    题目链接 题意 : n×m的矩阵,每个格子中有两种矿石,第一种矿石的的收集站在最北,第二种矿石的收集站在最西,需要在格子上安装南向北的或东向西的传送带,但是每个格子中只能装一种传送带,求最多能采多少矿 ...

  3. (中等) POJ 2948 Martian Mining,DP。

    Description The NASA Space Center, Houston, is less than 200 miles from San Antonio, Texas (the site ...

  4. 递推DP UVA 1366 Martian Mining

    题目传送门 /* 题意:抽象一点就是给两个矩阵,重叠的(就是两者选择其一),两种铺路:从右到左和从下到上,中途不能转弯, 到达边界后把沿途路上的权值相加求和使最大 DP:这是道递推题,首先我题目看了老 ...

  5. POJ 2948 Martian Mining

    Martian Mining Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2251 Accepted: 1367 Descri ...

  6. UVA 1366 九 Martian Mining

    Martian Mining Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Sta ...

  7. POJ 2498 Martian Mining

    Martian Mining Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2194   Accepted: 1326 De ...

  8. 【BZOJ-3174】拯救小矮人 贪心 + DP

    3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 686  Solved: 357[Submit][Status ...

  9. BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP

    BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...

随机推荐

  1. 《OD学storm》20160828

    一.Storm项目 1. 架构 javasdk -> nginx -> 日志文件 -> flume agent(collector) -> hdfs -> kafka - ...

  2. hdu2586(lca模板 / tarjan离线 + RMQ在线)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586 题意: 给出一棵 n 个节点的带边权的树, 有 m 个形如 x y 的询问, 要求输出所有 x, ...

  3. 「模拟赛20180307」三元组 exclaim 枚举+树状数组

    题目描述 给定 \(n,k\) ,求有多少个三元组 \((a,b,c)\) 满足 \(1≤a≤b≤c≤n\)且\(a + b^2 ≡ c^3\ (mod\ k)\). 输入 多组数据,第一行数据组数\ ...

  4. Task :rn-splash-screen:verifyReleaseResources FAILED

    Execution failed for task ':rn-splash-screen:verifyReleaseResources'. > java.util.concurrent.Exec ...

  5. python之垃圾回收机制

    一.前言 Python 是一门高级语言,使用起来类似于自然语言,开发的时候自然十分方便快捷,原因是Python在背后为我们默默做了很多事情,其中一件就是垃圾回收,来解决内存管理,内存泄漏的问题. 内存 ...

  6. State模式(状态设计模式)

    State??? State模式中,我们用类来表示状态.以类来表示状态后,我们就能通过切换类来方便地改变对象的状态.当需要增加新的状态时,如何修改代码这个问题也会很明确. 直接用状态代替硬编码 依赖于 ...

  7. 纯干货:Linux抓包命令集锦

    /******************************************************************************************* 版权声明* 本 ...

  8. .db文件打开方式

    有时在工作中,数据库格式db后缀的格式,直接是打不开的,所以我这里使用了数据库管理工具,步骤如下 1. 在电脑安装 Navicat Premium,安装后在桌面生成图标,点击图标打开程序. 2.打开程 ...

  9. Selenium----Selenium WebDriver /RC工作原理

    1.Selenium RC 工作原理 说明:客户端库文件将命令传递给server.接着server使用selenium-core的javaScript命令传递给浏览器,浏览器会使用自带的javaScr ...

  10. 深入V8引擎-Time核心方法之win篇(2)

    这一篇讲windows系统下TimeTicks的实现. 对于tick,V8写了相当长的一段discussion来讨论windows系统上计数的三种实现方法以及各自的优劣,注释在time.cc的572行 ...