Pokemon Go Go(状压dp) ICPC North Central NA Contest 2017 B题
题目链接: Pokemon Go Go 题目大意: 一个抓宝可梦的游戏,玩家一开始站在(0, 0)点,接着输入n表示宝可梦的数量,接着输入n行,每行两个整数和一个字符串,表示这个种类的宝可梦以及当前这只所在的坐标(这n只里面可能有好几只同种的宝可梦在不同位置)。 题目问玩家从(0, 0)开始,只能上下左右走,要把每种宝可梦都抓到一只且仅一只,最后回到(0, 0),最短的路程是多少。 样例输入 5 5 9 Eevee 20 20 Flareon 1 1 Flareon 1 8 Jolteon 2 8 Umbreon 样例输出 28 样例解释: The distance from (0,0) to (5,9) is 14 The distance from (5,9) to (2,8) is 4 The distance from (2,8) to (1,8) is 1 The distance from (1,8) to (1,1) is 7 The distance from (1,1) to (0,0) is 2 思路: n最大是25,宝可梦的种类最多就15,一个整数即可表示目前抓到的宝可梦集合的状态,因此可以状压dp。按状压dp的套路,其中一个参数是状压的整数,另一个则是最后加入这个集合中的宝可梦的编号。 所以 dp[i][j] 表示当前抓的宝可梦的集合是 i