倍增专题本蒟蒻只会个倍增lca,实在太菜了。
稍微灵活一下的倍增就不会了,所以开一个倍增专题,先把倍增练熟
1.跑路
由每次走 2k米很容易想到倍增。
map[k][i][j]表示从i走2k米能否走
[luoguP1037] 产生数(floyd + 高精度)传送门
先用 floyd 求出每一个数可以变成那些数。
然后利用乘法原理求解,需要高精度。
代码
#include <cstdio>
#include <cstring>
#include <iostream>
using namespa
[1143] [CTSC2008]祭祀river(最大独立集 || 偏序集最大反链)传送门
网上说这是偏序集最大反链,然而我实在不理解。
所以我换了一个思路,先用floyd,根据点的连通性连边,
问题就转换成了找出最多的点,使任意两个点之间不连边,也就是最大独立
[POJ2594] Treasure Exploration(最小路径覆盖-传递闭包 + 匈牙利算法)传送门
引子:
有一个问题,是对于一个图上的所有点,用不相交的路径把他们覆盖,使得每个点有且仅属于一条路径,且这个路径数量尽量小。
对于这个问题可以把直接有边相连的两点 x
[luoguP1119] 灾后重建(Floyd)传送门
基于Floyd的动态规划原理,我们可以只用进行一次Floyd。
而题目给出的限制条件相当于给Floyd加了时间限制而已。
还是得靠对Floyd的理解。
——代码
1 #include
[luoguP1027] Car的旅行路线(Floyd)传送门
建图麻烦,建完图搞一遍Floyd就好了。
——代码
1 #include <iostream>
2 #include <cstdio>
3 #include <cmath>
4
5 using namespace std;
6
7 int n,









