P2380 狗哥采矿【普及+提高】棋盘DP
狗哥采矿 - 洛谷
所谓棋盘dp就是dp[i][j]代表了(1,1)到(i,j)范围内的收益,在矩阵前缀时,利用了一些容斥原理达到状态转移的目的。本题为了维护矩阵形状,考虑到每个点其实只能一直向上或者一直向下,只需要dp[i-1][j]加上左边前缀和与dp[i][j-1]加上上部前缀和即可。
唯一让我疑惑的是,本次i,j的连接方式和其内部的1连接方式根本不同时,为什么不会产生影响呢?
宏观来说,我们向左插入直线时,选择的是上部的矩形,我们向上插入时,选择的是左部的,直线与被选择的矩形根本不想交,所以直线与矩形根本不会互相影响。而我们dp[i-1][j]与d[i][j-1]的状态内部已经安排好了没有冲突的最优情况。我们此时加入一条左或上的边,也是合理的,那么dp[i][j]就合理了,其他更大的矩形就可以利用这一合理性,构建更大的合理。
微观来说,见图。
首先看边界,最上面一定全部向左时,dp[1][j]才能最大值,最左侧全部向上时dp[i][1]才能取最大值。由于(1,1)左右答案都相同,所以这还不能充分说明问题。
到达(1,2)时,两种扩展方式,向上时,dp[i][j-1]内部不会影响本次操作。但本次方向显然和上方(1,2)位置方向发生冲突,但暂时还没有影响后续结果,我们继续推,假设本次是向上推最优。
(2,3)位置,向右推时,dp[2][2]并不会影响本次操作,而且我们这样也把(1,3)改成了向上,不会存在断层情况。那如果本次向左扩展最优呢,那么我们又得把左边全部染成黄色,dp[1][3]派上了用场,dp[1][3]在到达(2,2)点时被“修改”了部分方向,可我们调用时,它仍然保持这它内部最优的情况,而这种情况是连续无断层的。
#include <iostream>
# include<algorithm>
# include<cstring>using namespace std;
typedef long long int ll;int dp[550][550];
int bei[550][550];
int xi[550][550];
int main()
{int n,m;while(cin>>n>>m&&n&&m){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int x;cin>>x;xi[i][j]=xi[i][j-1]+x;}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int x;cin>>x;bei[i][j]=bei[i-1][j]+x;}}memset(dp,0,sizeof(dp));for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){dp[i][j]=max(dp[i-1][j]+xi[i][j],dp[i][j-1]+bei[i][j]);}}cout<<dp[n][m]<<'\n';}return 0;
}
以此类推,发现即使出现了内部冲突的情况,也不会对本次造成任何影响。
P2380 狗哥采矿【普及+提高】棋盘DP相关推荐
- P2380 狗哥采矿 (二维dp)
原题链接:狗哥采矿 - 洛谷 思路:我一开始想的是,一个点往左走还是往上走与 它上面和左边的点走的方向有关系,但是感觉复杂交错.....然后看到了大佬的二维dp,其实Aij往左走,就让它左边的这一条都 ...
- 洛谷P2380 狗哥采矿
P2380 狗哥采矿 题目背景 又是一节平静的语文课 狗哥闲来无事,出来了这么一道题 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是 ...
- 洛谷P2380 狗哥采矿【DP】【绿】
Date:2022.03.25 题目描述 一个n*m的矩阵中,每个格子内有两种矿yeyenum和bloggium,并且知道它们在每个格子内的数量是多少.最北边有bloggium的收集站,最西边有 ye ...
- 洛谷——P1548 [NOIP1997 普及组] 棋盘问题
P1548 [NOIP1997 普及组] 棋盘问题 题目描述 设有一个N \times MN×M方格的棋盘(1≤N≤100,1≤M≤100)(1≤N≤100,1≤M≤100) 求出该棋盘中包含有多少个 ...
- 狗哥历经四个小时整理大佬的内容,你确定不来看一下?
今天狗哥兴奋了 因为狗哥找到了测试界的几个权威 不信? 咱有图为证! 狗哥翻了一下这个公众号 满满的福利啊 找工作 就来看他 薪资高,岗位好 如果不满意 加狗哥微信 狗哥给你讨个说法! 测试帮日记(t ...
- [DFS] P1236 算24点 ( 普及+/提高
Date:2019/10/25 Degree of difficulty: ( 普及+/提高 Original question:P1236 算24点 →Happy−begining\to Happy ...
- 【Acwing提高】DP·背包
推荐:炒鸡棒的适合萌新的DP题单(大概?) [Acwing提高]DP·背包 文章目录 [Acwing提高]DP·背包 知识点 题目 采药 装箱问题 宠物小精灵之收服 数字组合 买书 货币系统1021 ...
- 狗哥和度娘的差距,就是一次点击
能否穿越古今,及时搜索. LOOK,狗哥已抵达,度娘仍然在路上.ON THE ROAD..
- ctfshow 网络迷踪-狗哥去哪
7 狗哥去哪 右下角是微博名字 找到对应的微博 但评论好像没有找到,于是去bilibili看了看 找到是在稻城亚丁 ctfshow{daochengyading}
- [NOIP2017 普及组] 棋盘
[NOIP2017 普及组] 棋盘 题目背景 NOIP2017 普及组 T3 题目描述 有一个m×mm \times mm×m的棋盘,棋盘上每一个格子可能是红色.黄色或没有任何颜色的.你现在要从棋盘的 ...
最新文章
- PHP的strlen与mb_strlen
- 理解并实施:VRRP(200-120新增考点)
- 多线程编程(三)--创建线程之Thread VS Runnable
- 蒸妙集团用科学熏蒸法,弥补现代人在运动上的缺乏
- growup怎么读_growup..是什么意思
- dorado 7 使用总结
- 软件测试工程师工作必备模板五件套
- Python 内置函数详解
- Ubuntu老是提示系统内存空间不足---扩展内存方法
- win7系统64位下安装sql server2000时提示兼容性问题
- 设置/etc/fstab实现自动挂载
- 美团App页面视图可测性改造实践
- 初探深度优化搜索--小白版
- 嵌入式软件工程师—成长笔记#03
- 什么是AT指令,AT指令是什么
- 使IE浏览器支持webp格式图片显示
- markdown逻辑符号
- win10 uwp 使用 Microsoft.Graph 发送邮件
- java调用bat脚本实现pppoe拨号_pppoe客户端自动拨号原理及实现
- 社会排斥范式:通过Cyberball游戏来探索其中的机制