洛谷 P1941 飞扬的小鸟

这道洛谷P1941题目通过动态规划解决,涉及上升和下降两种状态。上升状态类似完全背包问题,转移方程为dp[i][j] = min(dp[i-1][j-x[i]]+1, dp[i][j-x[i]]+1);下降状态为01背包,转移方程为dp[i][j] = min(dp[i][j], dp[i-1][j+y[i]])。若所有位置都无法到达,则从后往前找第一个可达点并计算经过的缝隙数量。" 112842713,10292959,Sentinel-1 TOPS影像干涉处理与形变监测技术在门源地震的应用,"['遥感', 'SAR影像', '地震监测', '形变分析', '干涉测量']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这道题很明显是一个动态规划,但是状态转移设计起来有点费劲

首先先把输入整明白,把每一列的上限和下限存起来,差值就是可以走的范围

for(register int i(1) ; i<=n ; i=-~i) x[i]=read(),y[i]=read();
for(register int i(1) ; i<=n ; i=-~i) shang[i]=m,xia[i]=1;
for(register int i(1) ; i<=k ; i=-~i){
	int p,l,h;
	p=read();l=read();h=read();
	shang[p] = h-1;
	xia[p] = l+1;
	vis[p] = 1;
}

然后考虑上升和下降两种情况,设dp[i][j]表示小鸟飞到i,j的最少跳跃次数


上升

随便导导(时间≈∞)后,发现上升其实是一个完全背包QWQ。考虑跳到这个点,可以从前一个单位的j-x[i]跳过来,也可以从当前单位的j-x[i]跳过来。(因为单位时间内可以跳很多次)

转移方程dp[i][j]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值