摘要: 虽然转移方程可以一眼看出 但是烦就烦在为何要排序 有人说这是一个贪心,又有人说这是一个保障正确性的。 就按照贪心的想法好了:在保证正确性的情况下尽量多的挂钩。 cpp include define N 2005 define INF 0x3f3f3f3f using namespace std; i 阅读全文
posted @ 2018-11-05 22:10 Patrickpwq 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 对于当前新加入的一条路径 他产生的贡献分为两种 1.另一条路径的LCA在当前路径上 2.当前路径的LCA在另一条上 对于情况1: 可以维护当前点到根节点有多少个LCA,查询只需查询u,v, 2 lca(u,v),修改需要对lca的子树+1 对于情况2: 显然的树上差分,查询就是lca子树的前缀和,修 阅读全文
posted @ 2018-11-05 20:30 Patrickpwq 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 可以先不管符合条件的 先统计出所有的可能走法(最短路条数 最短路条数) 然后减去会相遇的 会相遇的分为在点相遇和在边相遇 在点(设为p)相遇:先保证点在最短路上 然后从s到p的最短路等于从t到p的最短路 在边(设为(x,y,z))相遇:同样需要保证边在最短路上(需要判断三次 同样玄妙♂) 以及相遇的 阅读全文
posted @ 2018-11-05 16:50 Patrickpwq 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 很无奈 离正解就差一句话 简单的带权并查集 没啥好说的 也可以差分约束 cpp include define N 100005 define M 200005 define D 10005 using namespace std; template inline void read(T &x) { 阅读全文
posted @ 2018-11-05 13:58 Patrickpwq 阅读(115) 评论(0) 推荐(0) 编辑