UVALive 3530 Martian Mining(贪心,dp)
分析:
对于网格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)的更多相关文章
- UVaLive 3530 Martian Mining (简单DP)
题意:给定一个n*m的网格,每个格子里有A矿和B矿数量,A必须由右向左运,B只能从下向上运,中间不能间断,问最大总数量. 析:一个简单DP,dp[i][j] 表示 从 (0, 0) 到 (i, j) ...
- POJ 2948 Martian Mining(DP)
题目链接 题意 : n×m的矩阵,每个格子中有两种矿石,第一种矿石的的收集站在最北,第二种矿石的收集站在最西,需要在格子上安装南向北的或东向西的传送带,但是每个格子中只能装一种传送带,求最多能采多少矿 ...
- (中等) POJ 2948 Martian Mining,DP。
Description The NASA Space Center, Houston, is less than 200 miles from San Antonio, Texas (the site ...
- 递推DP UVA 1366 Martian Mining
题目传送门 /* 题意:抽象一点就是给两个矩阵,重叠的(就是两者选择其一),两种铺路:从右到左和从下到上,中途不能转弯, 到达边界后把沿途路上的权值相加求和使最大 DP:这是道递推题,首先我题目看了老 ...
- POJ 2948 Martian Mining
Martian Mining Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2251 Accepted: 1367 Descri ...
- UVA 1366 九 Martian Mining
Martian Mining Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Sta ...
- POJ 2498 Martian Mining
Martian Mining Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 2194 Accepted: 1326 De ...
- 【BZOJ-3174】拯救小矮人 贪心 + DP
3174: [Tjoi2013]拯救小矮人 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 686 Solved: 357[Submit][Status ...
- BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP
BZOJ_3174_[Tjoi2013]拯救小矮人_贪心+DP Description 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...
随机推荐
- Linux--4
一.centos7安装python3 1.下载python3的源码包 下载地址:https://www.python.org/ftp/python/3.6.2/Python-3.6.2.tgz 1 2 ...
- c#spinLock使用
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011915028/article/details/53011811 一下解释摘自msdn ...
- sql新增字段注意事项
新增字段的类型.长度(精度)是否合适 解决方法: 跟应用明确加字段和改字段的风险,确认新增字段类型正确.长度(精度)合适. 以及跟应用明确老数据是否要订正?如何订正?新增列是否非空?是否有默认值等等. ...
- PartTime__学习辅助软件_20161025
1.http://www.680.com/ruanjian/412629.html 1.1.http://www.gysjxjy.com/ 密码:我的名字的拼音(全小写) 使用的身份证信息:http: ...
- 021 Merge Two Sorted Lists 合并两个有序链表
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- Nodejs 连接 mysql时报错 Error: Cannot enqueue Query after fatal error
解决办法,参考:https://github.com/chill117/express-mysql-session/issues/18 我们只需在实例化SessionStore的时候,配置useCon ...
- Java操作Excel之POI简单例子
/** * 利用POI操作Excel表单 * * 需要jar包: * HSSF针对03及以前版本,即.xls后缀 * |---poi-3.16.jar * XSSF针对07及以后版本,即xlsx后缀 ...
- idea关闭sonar自动扫描
file-setting-other setting-sonar相关的setting全部关闭
- Javascript常见问题
倒计时 <Script Language="JavaScript"> var timedate= new Date("October 1,2002" ...
- java之struts框架入门教程
本教程主要讲述struts的简单入门操作 使用的是myeclipse工具 1.创建web项目 2.复制struts必要的jar包到 WebRoot/WEB-INF/lib 下 jar包列表如下: as ...