首页 > 其他分享 >B - 滑雪【2022GDUT寒假集训-简单DP】

B - 滑雪【2022GDUT寒假集训-简单DP】

时间:2023-02-19 00:33:08浏览次数:58  
标签:滑雪 const int 2022GDUT 寒假 dx dy include DP

B - 滑雪

原题链接

思路

\(定义f(i,j)为从坐标(i,j)出发的最大值\)
\(状态转移方程f(i,j) = max(f(i+dx[k],j+dy[k]))\)
\(答案为max(f(1,1),f(1,2),...,f(n,m))\)

注意

  1. \(维护dp顺序使得坡度更低的坐标先被计算pair<int,pii>根据X大小排序,y则保存坐标)\)
  2. \(判断是否偏移是否合法\)

代码

点击查看代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;

#define X first
#define Y second

typedef pair<int,int> pii;
typedef long long LL;
const char nl = '\n';
const int N = 110;
const int M = 1e6+10;
int n,m;
int a[N][N],f[N][N];
int dx[]={0,0,1,-1},dy[]={-1,1,0,0};		//偏移量
vector<pair<int,pii>> v;

void solve(){
	int x;
	cin >> n >> m;
	//确保从更小坡度出发的方案已计算出
	for(int i = 1; i <= n; i ++ ){
		for(int j = 1; j <= m ; j ++ ){
			cin >> a[i][j];		//需要保存地图
			v.push_back({a[i][j],{i,j}});
			f[i][j] = 1;
		}
	}
	sort(v.begin(),v.end());		//注意是begin()和end()
	for(int p = 0; p < n * m; p ++ ){		//注意vector是从0开始的
		int i = v[p].Y.X,j = v[p].Y.Y;
		int t = f[i][j]; 		//注意保存这个值
		for(int k = 0; k < 4; k ++ ){
			if(i+dx[k] <= 0 || j+dy[k] <= 0 || i+dx[k] > n || j+dy[k] > m || a[i][j] <= a[i+dx[k]][j+dy[k]])continue;
			f[i][j] = max(f[i][j],t + f[i+dx[k]][j+dy[k]]);		//取每个方向的最大值
		}
	}
	int ans = 1;
	for(int i = 1; i <= n; i ++ ){
		for(int j = 1; j <= m ; j ++ ){
			ans = max(ans,f[i][j]);
		}
	}
	cout << ans;
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);

	solve();
}

标签:滑雪,const,int,2022GDUT,寒假,dx,dy,include,DP
From: https://www.cnblogs.com/J-12045/p/17134079.html

相关文章

  • A - 摆花【2022GDUT寒假集训-简单DP】
    摆花原题链接思路\(\text{有}n\text{个数}\left(c_{1},c_{2},\ldots,c_{n}\right),0\leqslantc_{i}\leqslanta_{i}\text{,求有多少种方案数使}\s......
  • 寒假总结
    这个作业属于哪个课程<班级的链接>这个作业要求在哪里<作业要求的链接>这个作业的目标寒假总结一、回顾总结回望最初定下的目标,有满意之处,但也有一些......
  • [oeasy]python0086_ASCII_出现背景_1963年_DEC_PDP系列主机_VT系列终端
    编码进化回忆上次内容上次回顾了字符编码的新陈代谢ibm曾经的EBCDIC由于字符不连续导致后续出现无数问题随着网络的发展数据交换的需要原来的小隐患现在产生了......
  • [oeasy]python0086_ASCII_出现背景_1963年_DEC_PDP系列主机_VT系列终端
    编码进化回忆上次内容上次回顾了字符编码的新陈代谢ibm曾经的EBCDIC由于字符不连续导致后续出现无数问题随着网络的发展数据交换的需要原来的......
  • 用python绘制1960年到2019年全国GDP增长图
    frompyecharts.chartsimportBar,Timelinefrompyecharts.optionsimport*#处理数据f=open("D:/1960-2019全球GDP数据.csv","r",encoding="GB2312")#读取每一行,返回是......
  • Android 初代 K-V 存储框架 SharedPreferences,旧时代的余晖?
    本文已收录到 AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。前言大家好,我是小彭。SharedPreferences是Android平台上轻量级的K-V存储框架,亦是初代......
  • DP in DP
    其实去年暑假就讲过一次但是当时我没听懂糊弄过去的。我是个傻逼。首先是裸题Heromeetdevil。这种从DFS一步步推到DP感觉非常好理解。就是说我们不必追求DP的......
  • 寒假总结
    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2023learning这个作业要求在哪里https://edu.cnblogs.com/campus/fzzcxy/2023learning/homework/1......
  • RCNP有关RLDP题目
    第四单元RLDP在RLDP中下面所说正确的是()【选两项】A.使用RLDP的双向链路检测时需要双方都开启该功能B.使用RLDP的单向链路检测时只需一方开启该功能C.使用RLDP的......
  • 给wordpress添加下载按钮
    是不是一直觉得每次写文章,发布下载链接,一串串的网址,或者锚文本都非常不美观。用插件解决,貌似太过小题大做了。显示下载按钮,方法其实很简单,只要把如下代码插入主题目录下的fu......