[NOI2000] 青蛙过河 Java

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int m = sc.nextInt(); 
		sc.close();
		int a = m + 1; // 0个石墩,m片荷叶能过a只青蛙
		int ans = a * (1 << n); 
		System.out.println(ans);
	}
}

假设0个石墩,m片荷叶,每片荷叶最多站一只,出发点A石墩上还能站一只,那么总共能站m + 1只青蛙。假设1个石墩,就要在之前基础上多一个中转站的情况,把该情况分解为:① 从石墩A到中转站最多能过多少只青蛙;② 从中转站到终点D石墩最多能过多少青蛙。

因为荷叶和石墩之间可以随意来回跳转,所以第①个状态的结果其实就是0个石墩时能过的m + 1只青蛙,第②个状态和第①个相同也是m + 1只青蛙,所以推出状态转移方程为:dp[n][m] = dp[0][m] * 2^ndp[0][m] = m + 1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值