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 一群小矮人掉进了一个很深的陷阱里,由于太矮爬不上来,于是他们决定搭一个人梯.即:一个小矮人站在另一小矮人的 肩膀 ...
随机推荐
- 清北刷题冲刺 11-02 p.m
函数最值 #include<iostream> #include<cstdio> #include<cstring> #define maxn 100010 usi ...
- python 变量,输入,输出
目录 2.0 注释 2.1 变量 2.2 变量名命名规范 2.3 常量 2.4 输入 input 2.5 输出 print 2.6 关于开发工具 2.0 注释 python的注释方法 "&q ...
- python 之 函数 基础2
5.36 命名关键字 什么是命名关键字参数? 格式:在*后面参数都是命名关键字参数 特点: 1 必须被传值 2 约束函数的调用者必须按照key=value的形式传值 3 约束函数的调用者必须用我们指定 ...
- iOS导航栏添加返回按钮的方式
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"返回上级界面" style:UIBarBu ...
- HTTP/TCP协议基础
HTTP协议 基本概念 HTTP协议(超文本传输协议 HyperText Transfer Protocol):是用于从WWW服务器传输超文本到本地浏览器的传送协议.它不仅保证计算机正确快速地传输超文 ...
- JS精粹知识点和我的解释
函数若是不return则默认返回undefined const value=()=>{ let a=3; } let value_test; console.log(value(),value_ ...
- Luogu P4551 最长异或路径 01trie
做一个树上前缀异或和,然后把前缀和插到$01trie$里,然后再对每一个前缀异或和整个查一遍,在树上从高位向低位贪心,按位优先选择不同的,就能贪出最大的答案. #include<cstdio&g ...
- Knight Tournament (set)
Hooray! Berl II, the king of Berland is making a knight tournament. The king has already sent the me ...
- java——方法重载与重写、构造方法、this关键字、static关键字、strictfp关键字、类的导入
Java SE5新增加@Override注解,它并不是关键字,但是可以把它当作关键字使用.当你想要覆写(重写)某个方法时,可以选择添加这个注解,在你不留心重载而并非覆写了该方法时,编译器就会生成一条错 ...
- linux上的shutdown命令
定时关机:shutdown -r now 立刻重新开机 shutdown -h now 立刻关机 shutdown -k now 'Hey! Go away! now....' 发出警告讯息, 但没有 ...