Hanks_o的博客

有权限号的bzoj蒟蒻用户

排序:
默认
按更新时间
按访问量

倍增LCA(最近公共祖先)算法详解

算是详解吧算法策略: 比如求x和y的最近公共祖先。 先让深度较大(离根较远)的节点跳到与另一节点相同深度的位置(并不一定是同一个点)。 然后两个节点一起往上跳,跳到他们最近公共祖先的孩子停止。 然后返回结果的父亲节点即可。倍增需要用到ST表算法(差不多吧)。 没学过ST表看这里用f[i]...

2017-09-02 10:33:38

阅读数:681

评论数:2

bzoj1095: [ZJOI2007]Hide 捉迷藏(动态点分治)

题目大意: 给出一棵树,初始每个节点为黑色。 C操作改变一个节点的颜色。 A操作询问树上最远的两个黑色节点的距离。 这道题我也是学了好久。 解法: 我用到的是动态点分治,当然大牛们打LCT也是可以的(万能的LCT!!) 先普及一下树的重心(相信很多人都知道) 相对于上面这棵树,...

2017-08-26 18:52:53

阅读数:529

评论数:3

ST表算法详解

ST表算法详解(算是吧)ST表就是一个用来解决rmq(区间最值)问题的算法。 ST表不支持在线修改。 预处理时间复杂度O(nlogn),查询时间O(1)。 ST表算法详解(求最小值): 用mn[i][j]表示从j到j+2^i-1的最小值(长度显然为2^i)。 任意一段的最小值显然等于mi...

2017-08-25 08:21:55

阅读数:6657

评论数:6

bzoj4240: 有趣的家庭菜园(树状数组)

题目传送门 。 解法: 原数组下标为1~n。 打乱后交换次数就为逆序对个数。 因为交换一次就会产生一个逆序对。。 要求逆序对个数尽量少。 求的是一个山峰? 就是中间高两边递减的东西。 那么按高度排序。 看下插在左边还是右边产生的逆序对较少。 贪心嘛 代码实现: #in...

2018-04-22 19:34:05

阅读数:91

评论数:1

bzoj4465: [Jsoi2013]游戏中的学问(Dp)

题目传送门 。 解法: f[i][j]表示i个人分成j个圈的方案。 那么每进来一个人。他可以不自成圈。他插进别人的圈。 他也可以自成圈。从前面的人中选出两个人跟他成圈即可。 代码实现: #include<cstdio> #include...

2018-04-22 19:28:41

阅读数:74

评论数:0

bzoj4260: Codechef REBXOR(01Trie)

题目传送门 。 解法: 01Trie。 听名字大概就知道怎么回事了。 自己yy了下也不知道对不对。。 问题大概就是: 很多个数,求他们异或某一个数的最大值。 我的建法是这样的: 每个数转化成二进制的01序列。 从最高位开始建01trie。跟普通trie差不多。只是一个点只有两个...

2018-04-22 19:25:56

阅读数:78

评论数:0

bzoj1222: [HNOI2001]产品加工(Dp)

题目传送门 。 解法: f[i]表示A机器加工i时间B机器用最少的时间。 转移很好写 代码实现: #include<cstdio> #include<cstring> #include&...

2018-04-22 19:15:15

阅读数:50

评论数:0

bzoj3124: [Sdoi2013]直径

题目传送门 。 解法: 两个傻逼结论: 首先肯定在同一条直径上。因为每条直径都要经过这一段。 肯定是连续的一段。 因为如果你有两段的话。那么敢问这两段之间的路径你是怎么走过去的(树上两点路径唯一!) 这样的话就很好做了。 随便找条直径。 在这条直径上确定一条路径。使得这条路径上:...

2018-04-22 19:13:15

阅读数:61

评论数:0

bzoj4444: [Scoi2015]国旗计划

题目传送门 好题 解法: 因为区间互不包含。 那么左端点在区间内最右边的的区间一定是当前区间能扩展到最远的区间。 这句话有点绕。举个例子。 假设当前区间为1~5。 那么我们往右扩展。 找到左端点最右且小于等于5的区间。 这个区间一定是最优解。 因为区间互不包含啊。如果这个区间不...

2018-04-22 16:45:23

阅读数:68

评论数:0

bzoj3173: [Tjoi2013]最长上升子序列(树状数组)

题目传送门 。 解法: 因为他是从小到大插。 那么新插入一个值对于前面插入的点的影响是没有的。。 所以树状数组直接求解答案。 关键是插入的序列不知道啊。 感觉这题难在这。。 想了半天想了个O(n)求序列。 结果wa美滋滋。发现错误后重新想。 发现O(n)还求不了了。。 一般位...

2018-04-22 16:38:12

阅读数:91

评论数:0

bzoj3289: Mato的文件管理(莫队+树状数组)

题目传送门 。 解法: 刚才看到Gty的妹子序列。各种不会。。 看到这道题。。 不强制在线? 莫队啊。 进来的点树状数组求下逆序对就好了呀。 以为复杂度很高会跑很慢谁知5s就过去了。。。 代码实现: #include<cstdio&gt...

2018-04-22 16:31:57

阅读数:51

评论数:0

bzoj2730: [HNOI2012]矿场搭建(tarjan)

题目传送门 。 解法: 第一次写求割点。 全程%。 #include<cstdio> #include<cstring> #include<cstdlib>...

2018-04-22 16:29:42

阅读数:34

评论数:0

bzoj3531: [Sdoi2014]旅行(树链剖分+线段树)

题目传送门 。 解法: 据说叫动态开点。 需要用的点才建线段树。 那么最多只有二十万种不同的信息。。 跟主席树一样嘛。 YY就好了 代码实现: #include<cstdio> #include<cstring...

2018-04-22 16:27:30

阅读数:40

评论数:0

bzoj3670: [Noi2014]动物园(kmp)

题目传送门 。 解法: 感觉上是kmp。 然后码了个kmp。 然后看成了num[i]是前缀后缀不相交的最长长度。 然后样例出来个144。 发现并没有什么问题。 然后发现看错题了。。 然后我就在此基础上继续做。 s[i]表示前缀等于后缀且可以相交有多少个串。 那么求出最长不相交...

2018-04-18 19:03:31

阅读数:39

评论数:0

bzoj5301: [Cqoi2018]异或序列(莫队)

题目传送门 。 解法: 莫队。 怎么O(1)转移呢。 那么假设i到j的异或和是k。 sum[i]表示1到i的异或和。 那么sum[i-1]^k=sum[j]。 这样统计每个前缀和在区间内出现的次数。 那你就可以O(1)转移了 代码实现: #include&...

2018-04-18 16:17:23

阅读数:155

评论数:0

bzoj5178: [Jsoi2011]棒棒糖(主席树)

题目传送门 。 解法: 主席树求区间超过区间长度一半次数的数。 代码实现: #include<cstdio> #include<cstring> #include<cstdl...

2018-04-18 10:18:11

阅读数:41

评论数:0

bzoj3439: Kpm的MC密码(主席树+DFS序+字典树)

题目传送门 做这题有人跟我说用链表。处理相同的串。 网上都说要。。 其实不用吧。。记录每个串的结尾是在字典树上哪个点就行啊。 然后一个一个插啊。 解法: 因为是后缀所以到这建字典树。 然后kpm串肯定是子树的所有串。 那么用主席树维护子树第k小。 要求编号连续就套个dfs序就行了...

2018-04-18 10:12:56

阅读数:46

评论数:0

bzoj4956: [Wf2017]Secret Chamber at Mount Rushmore(floyd)

题目传送门 。 解法: 有向边判连通性。 floyd 代码实现: #include<cstdio> #include<cstring> #include<cstdlib&a...

2018-04-18 08:08:58

阅读数:42

评论数:0

bzoj5194: [Usaco2018 Feb]Snow Boots(线段树)

题目传送门 。 解法: 线段树维护一个01序列。 0表示不可以跳。1表示可以跳。 那么每次只需要求最长一段连续的0的长度就行。 如果可以跳过去那么其他也可以跳过去。 如果跳不过去那就不行。 然后那这样每次询问都插岂不是会爆。 那离线一下咯。 询问排下序。 从小到大插。 代码...

2018-04-18 08:07:23

阅读数:125

评论数:0

bzoj5293: [Bjoi2018]求和(Lca)

题目传送门 。 解法: k<=50 暴力算每个点到根的每个次方和。 然后求出lca差分减一下 代码实现: #include<cstdio> #include<cstring&g...

2018-04-18 07:52:05

阅读数:110

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭