信息学竞赛宝典:动态规划
上QQ阅读APP看书,第一时间看更新

1.3 宝藏

【题目描述】 宝藏(treasure_map)ZJU 2283

一张 N×M的地图上有P个宝藏,探险者每次可以向右或者向下走一步,求最少要走多少步才能找到所有的宝藏。

【输入格式】

第一行有3个整数,分别为NMP(1≤NM≤10 000 000 000,P≤100 000)。余下P行分别为每个宝藏的横、纵坐标。

【输出格式】

一个整数,即次数。

【输入样例】

7 7 7

1 2

1 4

2 4

2 6

4 4

4 7

6 6

【输出样例】

2

【算法分析】

从最简单的地图考虑,如果探险者每次只能向右或者向下走,那么可以发现无论如何都必须要走两步才能走完图1.3所示的两个点。

图1.3

由此可以推断出,如果有K个点连成这样从右上向左下的链,那么取完这K个点至少需要K次。

而其余的点,只要不属于该链,就肯定可以在某一次取值时被取走。

所以,该问题可转化为求最长不下降子序列的问题。