摘要: 不爽。 为什么tarjan能爆栈啊 十分显然的缩点,给缩点之后的点连上权值为后一个点集权值的有向边,然后spfa跑最长路。 注意一开始$dis_{st}$应该等于$st$这个集合的权值。 时间复杂度$O(能过)$。 非递归版的tarjan可以学习一下。 Code: #include <cstdio> 阅读全文
posted @ 2018-08-24 14:14 CzxingcHen 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 推荐博客: http://www.cnblogs.com/Mychael/p/9257242.html 感觉还挺好玩的 首先考虑以1为根,把每一个点子树的权值和都算出来,记为$val_{i}$,那么在所有操作都没有开始的时候(以$1$为根的)$ans_{1} = \sum_{i= 1}^{n}val 阅读全文
posted @ 2018-08-24 12:01 CzxingcHen 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 感觉好无聊。 秦九昭算法:一般地,一元n次多项式的求值需要经过(n+1)*n/2次乘法和n次加法,而秦九韶算法只需要n次乘法和n次加法。在人工计算时,一次大大简化了运算过程。(百度百科) 具体来说怎么做呢? $f(x) = \sum_{i = 0}^{n}a_{i}*x^{i} = (((a_{n} 阅读全文
posted @ 2018-08-24 07:10 CzxingcHen 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 考虑离散化后开权值线段树。 设序列中不小于$s$的数有$cnt$个,小于$s$的数的和为$sum$。 那么操作Z能成功的充要条件是$sum \geq (c - cnt) * s$。 如果序列中不小于$s$的数超过了$c$个,那么直接每一次都选这些数就好了。 如果没有超过$c$个的话,这$cnt$个数 阅读全文
posted @ 2018-08-23 15:32 CzxingcHen 阅读(267) 评论(0) 推荐(1) 编辑
摘要: 挺套路的题,然而一开始还是想错了…… $\sum_{i = 1}^{n}\sum_{j = 1}^{m}gcd(i, j) ^ {k} = \sum_{T = 1}^{min(n, m)}\left \lfloor \frac{n}{T} \right \rfloor \left \lfloor \ 阅读全文
posted @ 2018-08-23 13:37 CzxingcHen 阅读(203) 评论(2) 推荐(0) 编辑
摘要: 一个主席树题。 一开始想着直接动态开点硬搞就可以了,每次查询只要作一个类似于前缀和的东西看看区间有没有满,在主席树上二分就可以了。 但是这样是错的,因为一个权值会出现很多次……然后就错了。 所以我们考虑记录每一个权值最后出现的位置,直接开权值下标记录每一个权值最后出现的位置,因为是区间查询,所以可持 阅读全文
posted @ 2018-08-22 19:21 CzxingcHen 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 当天晚上并没有看懂题意,然后就刚了40分钟F,但是没有弄出来呜呜呜。 推荐博客: https://blog.csdn.net/Dream_maker_yk/article/details/81840495 考虑到我们写出一行和一列的情况就可以还原出整个正方形,而这一行和这一列的长度是一样的,所以我们 阅读全文
posted @ 2018-08-22 14:24 CzxingcHen 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 要优先安排历年NOIP题 考虑到要移动,肯定要先把空的格子移动到起点旁边,所以我们对于每一个询问都先bfs一次求出把空格移到起点的四个位置的最短路,而且要保证不能移动起点的方块。 只有空的格子在一个格子四边的时候才可以进行一次移动,所以将一个可行的格子与它周围四个可能的空格出现位置捆绑为一个结点,这 阅读全文
posted @ 2018-08-21 14:41 CzxingcHen 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 新技能get 树哈希,考虑到两棵树相同的条件,把每一个结点的哈希值和树的siz写进哈希值里去。 做出A树每一个结点为根时的树的哈希值丢进set中,然后暴力枚举B树中度数为1的点,求出删掉这个点之后的哈希值是否相同。 暴力算哈希是$O(n^{2})$的,考虑换根法,一个点作根的时候它的子树中的信息是不 阅读全文
posted @ 2018-08-21 10:16 CzxingcHen 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 高级的暴力,神仙优化…… 首先$O(n^{3})$的$dp$很好想,然后这样可以$O(1)$地回答询问。 考虑到所有物品的体积是一个连续的区间,所以说我们可以合并一些物品来达到预处理时间均摊的效果。 我们知道$k = pm + q$表示一个带余除法,那么我们对于每一个$k$,考虑枚举物品的体积$v$ 阅读全文
posted @ 2018-08-20 17:06 CzxingcHen 阅读(172) 评论(0) 推荐(0) 编辑