随笔分类 -  题解

上一页 1 2 3 4 5 6 7 8 9 10 ··· 21 下一页
题解
摘要:点分治,对于每个分治中心,考虑求出经过它的符合长度条件的链的最大权值和。 从分治中心dfs下去取出所有链,为了防止两条链属于同一个子树,我们一个子树一个子树地处理。 用s1[i]记录目前分治中心伸下去的链中长度为i的链的最大权值,s2[i]记录新子树中的链的最大权值。 分数规划,考虑合并,枚举长度, 阅读全文
posted @ 2018-12-25 19:55 HocRiser 阅读(183) 评论(0) 推荐(0)
摘要:支配树目前只见到这一个应用,那就不独分一类,直接作为拓扑排序题好了。 每个点向所有食物连边,定义fa[x]为x的支配点,即离x最近的点,满足若fa[x]灭绝,则x也要灭绝。 这样,将fa[x]向x连边,则建出的新图是一棵树,这就是支配树(不是严谨的支配树,被出题人称为灭绝树) 建树流程是,将拓扑序反 阅读全文
posted @ 2018-12-19 14:43 HocRiser 阅读(181) 评论(0) 推荐(0)
摘要:起床困难综合症那题,只要从高往低贪心,每次暴力跑一边看这一位输入0和1分别得到什么结果即可。 放到序列上且带修改,只要对每位维护一个线段树,每个节点分别记录0和1从左往右和从右往左走完这段区间后变成的数即可。 放到树上,只要树链剖分即可。但这里有一个很大的常数k,实际上我们只需要一个数就可以记录64 阅读全文
posted @ 2018-12-17 02:58 HocRiser 阅读(186) 评论(0) 推荐(0)
摘要:首先merge就是先delete两次再insert,Max就是整个区间的最大值减最小值,Min就是区间中所有相邻两数差的最小值。 Splay支持区间最大值,区间最小值,区间相邻差最小值即可。 阅读全文
posted @ 2018-12-16 19:01 HocRiser 阅读(192) 评论(0) 推荐(0)
摘要:越来越写不来简单题了。 就是求a[i]到b[i]之间的位置有多少个数是第一次出现且目前仅出现了一次。树状数组,每次给第一次出现的数的位置+1,若到了第二次出现的位置,则将第一次出现的位置-1即可。 阅读全文
posted @ 2018-12-16 18:34 HocRiser 阅读(158) 评论(0) 推荐(0)
摘要:对每行每列分别建一个点,问题转为选n+m条边,并给每条边选一个点覆盖,使每个点都被覆盖。也就是最小生成环套树森林。 用和Kruskal一样的方法,将边从小到大排序,若一条边被选入后连通块仍然是一个环套树(即边数不多于点数)则连上。证明大致同Kruskal。 阅读全文
posted @ 2018-12-16 16:12 HocRiser 阅读(250) 评论(0) 推荐(0)
摘要:莫队,cnt数组记录每个数的个数,bitset b1[i]记录数i是否出现过,b2[i]记录数M-i是否出现过。 减法:((b1>>x)&b1).any()。 加法:(((b2>>(M-x))&b1).any()。 乘法:若存在一定有一个数<=sqrt(1e5),枚举即可。 复杂度:$O(n\sqr 阅读全文
posted @ 2018-12-15 13:16 HocRiser 阅读(171) 评论(0) 推荐(0)
摘要:首先冷静一下看清问题的本质,是将整个数列分成两个递增子序列。 那么由Dilworth定理得,无解当且仅当数列的最长下降子序列的长度>2,先特判掉。 然后就有一些比较厉害的做法:http://www.cnblogs.com/Gloid/p/10025835.html 一种比较直观的做法是,将每对逆序对 阅读全文
posted @ 2018-12-15 12:19 HocRiser 阅读(237) 评论(0) 推荐(1)
摘要:第一种方法是决策单调性优化DP。 决策单调性是指,设i>j,若在某个位置x(x>i)上,决策i比决策j优,那么在x以后的位置上i都一定比j优。 根号函数是一个典型的具有决策单调性的函数,由于根号函数斜率递减,所以i决策的贡献的增长速度必定比j快。 于是使用基础的决策单调性优化即可。 注意两个问题,一 阅读全文
posted @ 2018-12-15 11:45 HocRiser 阅读(287) 评论(0) 推荐(0)
摘要:比较神的一道题,正解比较难以理解。 首先不难得出一个(nm)^3的算法,对所有串建AC自动机,将在每个点停止的概率作为未知数做高斯消元即可。 可以证明,AC自动机上所有不是模式串终止节点的点可以看成一个点,不妨合并为同一个点(n+1号点)。 对于一个模式串,它肯定是从n+1号点走了m步后到达的,概率 阅读全文
posted @ 2018-12-14 19:18 HocRiser 阅读(229) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/KsCla/article/details/78249148 用类似经典的链上区间颜色计数问题的做法,这个题可以看成是询问DFS在[L[x],R[x]]中,深度在[dep[x],dep[x]+d]中,上一个同色点在[0,L[x]-1]中的点的个数。这是个三 阅读全文
posted @ 2018-12-11 20:02 HocRiser 阅读(215) 评论(0) 推荐(0)
摘要:比较自然的思路是,由于需要记录连通块合并时的信息,所以需要建出Kruskal重构树。 需要用LCT维护,支持加点和在线LCA操作。 不妨考虑在并查集合并的同时记录信息,pre[x]表示x与它的父亲相连的时刻。 两个点连通的时刻,等于两个点之间路径上时刻的最大值。 注意到按秩合并但不路径压缩的并查集不 阅读全文
posted @ 2018-12-10 19:42 HocRiser 阅读(210) 评论(0) 推荐(0)
摘要:可持久化Trie模板题。 建两种可持久化Trie,每个点两棵,一棵对DFS求前缀和,一棵对祖先求前缀和。 或者树剖,不好写多少还多个log。 阅读全文
posted @ 2018-12-10 19:21 HocRiser 阅读(239) 评论(0) 推荐(0)
摘要:线段树基础操作题,唯一需要思考下的是将区间的前k个0覆盖为1。 线段树上二分,先递归到左子树覆盖,回溯时返回还剩多少个0未被覆盖,在根据这个信息递归到右子树。注意特判k=0的情况。 要维护的信息有:区间左边最长0连续段,右边最长0连续段,区间整体最长0连续段,区间内1的个数,以及一个记录是否被区间覆 阅读全文
posted @ 2018-12-09 12:06 HocRiser 阅读(263) 评论(0) 推荐(0)
摘要:经典问题,按位贪心,每次需要知道的是”在这一位之前的位都以确定的情况下,能否找到这一位是0/1的数”,这就是在询问[L,R]内某个值域区间是否有数,主席树即可。 阅读全文
posted @ 2018-12-09 10:41 HocRiser 阅读(142) 评论(0) 推荐(0)
摘要:两种做法,前一种会TLE。 第一种是高一数学题做法,设一个妖怪的atk和dnf分别为x和y,则它在(a,b)环境下的战斗力为x+y/a*b+y+x/a*b。 设t为b/a,则战斗力即$f(x,y,t)=x+y+tx+\frac{y}{t}$,其中$t\in(0,+\infty)$。 二分答案c,问题 阅读全文
posted @ 2018-12-09 08:51 HocRiser 阅读(344) 评论(2) 推荐(1)
摘要:首先有一个显然的$O(n^2)$暴力做法,将每个位置看成点,然后将所有限制相等的数之间用并查集合并,最后答案就是9*(10^连通块的个数)。(特判n=1时就是10)。 然后比较容易想到的是,由于每次合并的是一个区间,逐个合并点过于浪费时间,考虑用线段树建图优化复杂度,但发现线段树建图并不能支持题目中 阅读全文
posted @ 2018-12-08 17:32 HocRiser 阅读(160) 评论(0) 推荐(0)
摘要:1.题意表述十分难以理解,简单说就是:有n个单词,确定一个背的顺序,使总代价最小。 2.因为第(1)种情况的代价是n*n,这个代价比任何一种不出现第(1)种情况的方案都要大,所以最后肯定不会出现“背某个单词的时候它的后缀还没背”的情况。 3.考虑将每个串和单词表中它的最长后缀连边,则形成了一棵树。我 阅读全文
posted @ 2018-12-07 20:05 HocRiser 阅读(228) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/xyz32768/article/details/81591955 首先区间DP和状压DP是比较明显的,设f[L][R][S]为将[L,R]这一段独立操作最终得到的字符序列为S的最大收益。其中S的位数为(R-L)%(k-1)+1。 枚举R第一次参与的操作的 阅读全文
posted @ 2018-12-06 19:27 HocRiser 阅读(269) 评论(0) 推荐(0)
摘要:考虑任何一条垂直于x轴的直线,由于圆不交,所以这条直线上的圆弧构成形似括号序列的样子,且直线移动时圆之间的相对位置不变。 将每个圆拆成两边,左端加右端删。每次加圆时考虑它外面最内层的括号属于谁。用set维护括号序列,每次从插入的位置往上找,如果第一个找到的是上括弧则说明被它包含,如果是下括弧说明和它 阅读全文
posted @ 2018-12-04 00:16 HocRiser 阅读(185) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 10 ··· 21 下一页