【ybtoj高效进阶 21268】数塔路径(DP)

该博客讨论了ybtoj高效进阶21268题目的数塔路径问题,涉及从三角形数塔的左上角到右下角的最长路径。博主通过动态规划(DP)的方法解决了在某些点禁止通行时如何找到次优路径的问题。文章详细介绍了思路,即确定每行最优路径,然后计算每一列选择一个数的最大路径和,最终得出解决方案。
摘要由CSDN通过智能技术生成

数塔路径

题目链接:ybtoj高效进阶 21268

题目大意

给你一个三角形的数塔,然后多次询问,每次不准走一个点,问你从左上到右下的最长路径和是多少。
(只能向下或右下走)

思路

首先我们不难 DP 出最优答案,但它会 ban 点。

那我们考虑它 ban 掉的点会不会对最优答案造成影响,如果有影响,就找次优的。
(不一定是全局最优的,而是这一行选的不一样中最优的)

首先一行只会走一个点,那我们就可以求出最优的答案每一行走的点。
然后我们要看某一列选一个数的最大答案。

那我们就是从起点到它的最大值加它到终点的最大值减去它的权值。
(起点到它和它到终点可以 DP 求出)

然后就可以搞搞出来啦。

代码

#include<cstdio>
#include<iostream>
#define ll long long

using namespace std;

int n, m, a[1001][1001], pl[1001], x, y;
ll f[1002][1002], g[1002][1002];
ll maxn[1001], minn[1001];

ll clac(int x, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值