点分治
吴俊达9812
这个作者很懒,什么都没留下…
展开
-
poj 1741 tree
点分治模板题,不过边界条件真的写自闭了(QAQ)我好菜啊。。。来总结一下循环的边界条件1.for( int i = 0;i; < rp-1;i++ )停止的条件是 i= rp - 1 定义好 i 表示 当前考虑的点,rp表示成立点的下一个点。可是i++在后面,所以存在的情况是 不一定退出时的 i 在循环里面执行过。for循环其实就相当于 while 循环 最后 ++...原创 2019-06-13 14:22:40 · 133 阅读 · 0 评论 -
spoj 1825
这题貌似用启发式合并的话复杂度为nlogn,然而我不会,于是用 树状数组写的,复杂度 n(logn)2,跑了900多ms。 用树状数组有一个坑,就是树状数组的下表从1 开始,但是可能存在路径上关键节点为0的情况,那么我们给每条路径关键节点个数加一,就避免了这种情况。还有一个问题是如果根节点本身是关键节点的话,需要把两条路径的个数的和减1.还有就是树状数组清空如果memset会超时,于是我记录了...原创 2019-06-13 17:00:21 · 166 阅读 · 0 评论 -
洛谷 P2664 树上游戏
#include <bits/stdc++.h>using namespace std;typedef long long lint;typedef long long LL;const lint maxn = 200000 + 5;const lint maxm = 400000 + 5;const lint inf = 0x3f3f3f3f3f;lint vis[m...原创 2019-07-12 18:37:40 · 176 阅读 · 0 评论 -
codeforces 321C 点分治好题
题意:给定一棵树,让你对其进行染色,使得任意颜色相同的两个点之间的路径上存在等级更高的颜色。思路:我们考虑点分树的结构,点分树上的每个节点都对应于一个边的集合(经过这个节点的所有边)。点分树上的父子关系,一棵点分树上任意一个节点,以他为根的子树上的所有点是这个节点路径集合的端点集合。有了这些结论,这道题就变成了对点分树进行染色,每层都染成一个颜色。因为点分树的层数最多为logn,所以一...原创 2019-09-17 22:52:16 · 170 阅读 · 0 评论 -
codeforces 1101D 点分治模板(注释掉的地方是需要自己填充的)
题意:一颗树,每个点有权值,问最长路径使得路径上的点的gcd > 1点分治写法的注意事项:一条分治完全处理完之后才可以更新,不能出栈的时候更新。技巧:使用mark数组#include <cstdio>#include<vector>#include<cstring>#include<algorithm>#include&...原创 2019-09-18 15:24:50 · 169 阅读 · 0 评论 -
hdu4812 D Tree
题意:给定一棵 n 个点的树,每个点有权值 Vi问是否存在一条路径使得路径上所有点的权值乘积 mod(10^6 + 3) 为 K输出路径的首尾标号,若有多解,输出字典序最小的解思路:这里用了mark数组和tim数组来进行标记。#pragma comment(linker,"/STACK:102400000,102400000")#include<vector>...原创 2019-09-28 15:54:08 · 182 阅读 · 0 评论