- Tales of seafaring
发现需要维护最短路为单数和双数的最短路,所以先跑个最短路,然后对于每个询问看d是单数还是双数,然后判断输出就行,注意到直接这么写然后对于每个询问再查的话空间会爆,所以就把询问记录下来对于每个点为起始跑最短路的时候直接更新答案就行。 - 公路修建问题
求最大值最小,想到二分答案,考虑到在限制内选尽量多的道路一最后答案一定优,所以可以二分到一个答案大小然后按照先取道路一再取道路二,然后跑最小生成树就行了。 - 吃草
显然要先跑每个点的最短路,然后发现剩下的就是类似求最长上升子序列一类的东西,然后就DP一下LIS,最后在dp数组里找最大值就行。