上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 44 下一页
摘要: 有关or的最大/小值问题,一般都是从大往小贪心,后面的贪心不破坏前面贪心的结果。 对于这题同样从大往小按位考虑,只需要考虑前缀异或和。显然要使这一位为0,每段的末尾的前缀异或和必须均为0,且n的前缀异或和也为0。 如果这位上为0的前缀个数不到m则放弃这一位,否则将所有这一位为1的位置删去。最终结果一 阅读全文
posted @ 2018-11-01 16:56 HocRiser 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 当最终挂饰集合确定了,一定是先挂挂钩多的在挂挂钩少的。 于是按挂钩从大到小排序,然后就是简单的01背包。 阅读全文
posted @ 2018-11-01 10:23 HocRiser 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 在虐各种最长公共子串、子序列的题虐的不耐烦了之后,你决定反其道而行之——被它们虐。 操作一:对A,B分别建SAM,暴力BFS。 操作二:对B建序列自动机或SAM,A在上面暴力匹配。 操作三:对A,B建序列自动机,暴力匹配。 操作四:对B建序列自动机,在自动机上DP。 上面的我一句也看不懂,对不起我重 阅读全文
posted @ 2018-10-31 19:25 HocRiser 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 先发掘性质: 1.xor和gcd均满足交换律与结合率。 2.前缀gcd最多只有O(log)个。 但并没有什么数据结构能同时利用这两个性质,结合Q=10000,考虑分块。 对每块记录这几个信息: 1.块内所有数的gcd与异或和。 2.将块内所有前缀异或和放入一个数组排序。 查询时从前往后遍历每个块: 阅读全文
posted @ 2018-10-31 11:52 HocRiser 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 看到数据范围就大概只能想到这一种做法了吧。 首先实际上是每个点的权值为v[i]=c[i]+son[i],然后删除一个点就是v[fa[i]]+=v[i]-1。 从下往上贪心删,每次将节点的所有儿子按权值排序,从小到大能删就删,这样一定最优。 感性证明一下“若因为删了某个点而使祖先无法被删去,而删这个点 阅读全文
posted @ 2018-10-31 08:41 HocRiser 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 求最小权极大线性无关组。 先将所有向量按权值排序,从小到大依次判断,若能被前面已选向量线性表出则不选,这样一定最优。 据说是用拟阵来证明,但感性理解一下感觉比较显然,首先这样个数一定是最多的,其次对于一个线性相关组,没有被选上的一定是最大的那个向量,于是解一定最优。 阅读全文
posted @ 2018-10-30 23:45 HocRiser 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 两种显然的做法: 1.树上差分+线段树合并。$O(n\log n)$ 2.树链剖分转为序列上差分+线段树。$O(n\log^2 n)$ 后一种的代码: 阅读全文
posted @ 2018-10-30 23:31 HocRiser 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 这题有多种做法,一种是倍增预处理出每个点往上走2^i步最少需要的初始战斗力,一种是裸的启发式合并带标记splay。 每个点合并能攻占其儿子的所有骑士,删去所有无法攻占这个城市的骑士并记录答案。 注意到splay每次实际上只需要取出最小的元素判断是否牺牲,这显然可以用堆维护。 关于可并堆打标记:和线段 阅读全文
posted @ 2018-10-30 19:18 HocRiser 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 密室玩小凸。 完全二叉树关于复杂度的两个性质: 1.所有点的深度和为$O(n\log n)$ 2.所有点的子树内的叶子个数和为$O(n\log n)$ 根据这两个性质可以分别解决此题。 下面使用第二个性质,参考:https://www.cnblogs.com/Gloid/p/9874570.html 阅读全文
posted @ 2018-10-30 18:24 HocRiser 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 请仔细阅读数据范围,c<=7.线段树合并裸题,对于乘积大小比较,使用log即可。 阅读全文
posted @ 2018-10-29 23:39 HocRiser 阅读(274) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 44 下一页