随笔分类 - 基本算法---------------------
摘要:题目链接 中文翻译版题目 ps:两个略有不同,原题数据范围是n<=3e5,且数据保证输入的b是a的祖先。 算法:ccz 大爷自创,大概就是并查集+启发式合并+平衡树维护。 分析: 先dfs预处理出每个点的深度,然后对于每个点都建立一棵平衡树来储存以这个点为起点的路径,按照第一关键字终点的深度从小到大
阅读全文
摘要:题目链接 真是一道神题(大家普遍认为是去年NOIP最难的一道so......),然而之前并没有写过关于树上差分的题目,所以自己想了一晚上+一早上都没能想出来(搞的心神不宁T^T)->还是太弱 题解感觉没什么必要发了,网上的都差不多吧(都是nlogn的写法),需要的话可以看一下yy dalao的题解,
阅读全文
摘要:题目链接 这道题就是LCA的完全模版题了,之前学倍增的时候写过一次,但是太久没复习忘了...... 滚回来重新学了一波,赶紧写篇博客记录一下~ 倍增法求LCA的基本思路:先dfs预处理出每个节点i的祖先2^j表示为gr[i][j]、深度deep[i]以及到祖先2^j 的距离dis[i][j]。然后对
阅读全文
摘要:Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能帮他算出每个气
阅读全文
摘要:推荐一波题解:http://blog.csdn.net/yuyanggo/article/details/48154031 这道题很容易想出要用DFS,但是单纯的DFS枚举时间复杂度会达到O(n!),这个复杂度是难以接受的,因此我们要想办法剪去一些不必要的情况: 1.用used[i]表示i这个数字是
阅读全文
摘要:这道题是很简单的分块吧,统计每个块里要中转的次数(即st数组),最后输出即可。 如果修改某个弹力装置的弹力系数,那么要从这个装置开始往回走到这一块的最左端(即l[belong[b]]),修改相对应的st数组和pt数组,它前面的块和后面的块都不受影响(因为st统计的是走到这一步到走出这一个装置所属的块
阅读全文
摘要:听说这道题可以用树状数组什么鬼的做,反正我不会,还是老老实实打manacher+贪心大法吧…… 我们只要在跑manacher的过程中,用一个结构体(也可以直接用数组)来记录以每个字符为对称轴的最长回文的最左端和最右端,然后就得到了一些线段,于是问题完美地转换成了求取最少段的线段来完全覆盖一个区间了,
阅读全文
摘要:#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<cstdlib> #define eps 1e-3 using namespace std; stru
阅读全文

浙公网安备 33010602011771号