把一个凸包进行三角剖分,那么如果把每个三角形看成一个节点,有相邻边的三角形之间连一条边,那么这就成了一个树形结构
我想了一下,认为能连接凸包上两点所经过的三角形,一定是新树中的一条链,所以只要树型dp求最长链即可
处理相邻的三角形有点麻烦,我用了一个比较轻巧的方法:把每个三角形的三条边放进一个map,然后每新读入一个三角形就把他的三条边扔进map里查,如果出现过了就可以连边
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <utility>
#include <cctype>
#include <algorithm>
#include <bitset>
#include <set>
#include <map>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <cmath>
#define LL long long
#define LB long double

这篇博客介绍了如何使用树型动态规划(DP)解决BZOJ2657题目的旅游问题。作者首先将凸包进行三角剖分,构建出一个树形结构,并提出每两个相邻点间的路径对应树中的一条链。然后通过维护一个map来处理相邻三角形,判断并建立边的连接,从而找到最长链。
439

被折叠的 条评论
为什么被折叠?



