该文被密码保护。 阅读全文
posted @ 2018-01-21 17:55 Konnyaku 阅读(3) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2018-01-21 17:54 Konnyaku 阅读(7) 评论(0) 推荐(0) 编辑
摘要: Codeforces Round 36 蒟蒻的我并没有参加contest,比赛后打的,目前只写了4道题QWQ。 A.Garden 这这这真的就是一道水题 <题意概括> 给定n个水桶的数值,求在这n个水桶中能整除K的最大的数值。1<=n,k<=100. 直接枚举,因为只有一百,取最大的数。 Code 阅读全文
posted @ 2018-01-18 20:30 Konnyaku 阅读(163) 评论(4) 推荐(0) 编辑
摘要: BZOJ 3673——可持久化并查集by zky 不同于普通并查集的是 可持久化并查集是在主席树上实现的, 原理与普通并查集一样。 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define 阅读全文
posted @ 2018-01-12 17:58 Konnyaku 阅读(121) 评论(0) 推荐(0) 编辑
摘要: BZOJ 2152 Luogu 2634——聪聪可可 题意 求两点之间路径和为3的倍数占的概率(最简) 解题思路与BZOJ1468差不多, 不过本题在计算经过某个点的次数时用了个ans数组, 对路径长度模3,得到的是0或1或2,但仍需要去重。 返回的值应是ans[0]*ans[0]+ans[1]*a 阅读全文
posted @ 2018-01-12 17:43 Konnyaku 阅读(143) 评论(1) 推荐(0) 编辑
摘要: Doubling Algorithm——倍增算法 是一种可以优化时间复杂度的神奇的算法,可以用它来求LCA等等。 基本思想: deep[i] 表示 i节点的深度, fa[i,j]表示 i 的 2^j (即2的j次方) 倍祖先,那么fa[i , 0]即为节点i 的父亲, 然后就有一个递推式子:fa[i 阅读全文
posted @ 2018-01-12 16:53 Konnyaku 阅读(277) 评论(1) 推荐(0) 编辑
摘要: Luogu 3203 BZOJ 2002——弹飞绵羊 题意概括 给定一个序列,有N个装置,绵羊在不同 其实就是个裸LCT。 从i能跳到i+k即可以理解为i到i+k之间有一条连边 修改操作即断边然后连边。 在查询时只需要把要出发的点成为原树的根,然后访问n+1,把n+1splay到根,然后结果就在n+ 阅读全文
posted @ 2018-01-12 16:52 Konnyaku 阅读(131) 评论(1) 推荐(0) 编辑
摘要: BZOJ 1468——tree 点分治思想,处理一些树上路径问题中的高效算法。 重心——作用是可以优化时间复杂度,使递归的层数最少。 重心就是以某个点为根且这个点的子树最大值是最小的。 找重心的基本思路: dfs求得每一个点的最大子树Maxsize,用数组记录下来, 判断这个值是否比当前根的Maxs 阅读全文
posted @ 2018-01-12 16:42 Konnyaku 阅读(180) 评论(1) 推荐(0) 编辑
摘要: BZOJ 10628 Luogu2633——count on a tree 题意:查询一定区间内第K小的点权。 由于有lastans所以强制在线,这道题就相当于树上的主席树, 树链剖分+主席树,主席树相比普通主席树有一丢丢的改变, root[i]不再是指向root[i-1],而是指向它在树上的父亲, 阅读全文
posted @ 2018-01-09 20:08 Konnyaku 阅读(209) 评论(1) 推荐(0) 编辑
摘要: Mo's Algorithm——莫队算法 <一个优雅的暴力算法> 主要题型分为三种,不带修改莫队,带修改莫队,树形莫队。 <最最最最最普通的莫队> 莫队算法实质是离线情况下对所有即将要查询的区间进行一次美妙的sort(以L为第一关键字,R为第二关键字),然后用 两个指针L,R,在区间上用看似暴力的方 阅读全文
posted @ 2018-01-07 15:51 Konnyaku 阅读(330) 评论(0) 推荐(0) 编辑