随笔分类 -  题解

上一页 1 2 3 4 5 6 7 ··· 21 下一页
题解
摘要:D1T1:异或粽子 显然令b[]为a[]的前缀和,那么就是在b[]中任取两数异或,求异或结果前k大和。 于是暴力$O(n^2)$显然,60pts。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l) 阅读全文
posted @ 2019-04-14 11:22 HocRiser 阅读(250) 评论(0) 推荐(0)
摘要:用LCT支持:在线加边,单点修改,求一个两个点路径上的所有边BCC的点权和。 用LCT维护边BCC的形态(即缩边双之后的树),2,3操作都是LCT基本操作,重点考虑加边操作。 当这条边的两个端点属于同一BCC时显然没有任何影响。当两个端点不在同一个连通块里时直接在LCT上做link(bel[x],b 阅读全文
posted @ 2019-04-02 11:06 HocRiser 阅读(257) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/ljh2000-jump/p/6423399.html 阅读全文
posted @ 2019-03-31 12:48 HocRiser 阅读(227) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/WAMonster/p/10181214.html 主要用于支持含有较难维护的区间操作与查询的问题,要求其中区间赋值操作(assign())是纯随机的。 注意要先split(r+1)再split(l),最好最后设一个点(n+1,n+1,0) 阅读全文
posted @ 2019-03-28 19:36 HocRiser 阅读(395) 评论(0) 推荐(0)
摘要:显然先选每个点都取一遍然后再取满次数最优,用最小树形图决定第一次取的顺序。 朱刘算法的流程是(总复杂度O(nm)): 1.对除根外所有点,找到所有指向它的边中权值最小的那一条,记其权值为ind[]。 2.找到所有不包含根的、由(1)中找到的那些边构成的环,并将环缩点。若没有这样的环则结束。 3.将所 阅读全文
posted @ 2019-03-26 19:34 HocRiser 阅读(270) 评论(0) 推荐(0)
摘要:线段树维护区间内1的个数v,最长1/0连续段长度d1/0,从左端开始最长1/0连续段长度dl1/0,从右端开始最长1/0连续段长度dr1/0,区间覆盖标记和反转标记。 我的方法中覆盖标记和反转标记不能共存,当需要打覆盖标记时先清空反转标记,需要打反转标记时若当前已存在覆盖标记则变为打上相反的覆盖标记 阅读全文
posted @ 2019-03-22 17:39 HocRiser 阅读(185) 评论(0) 推荐(0)
摘要:树上LIS:树上找一条简单路径的子序列使点权严格单增,最大化长度。 原题数据过小,用线段树合并可以做到$O(n\log n)$。 每个点用一棵线段树维护以每个权值为结尾的LIS最长长度,线段树合并时更新子序列不包含当前点时的最大值,再线段树上区间询问得到包含时的最大值并更新线段树。 阅读全文
posted @ 2019-03-21 23:50 HocRiser 阅读(503) 评论(0) 推荐(0)
摘要:https://blog.sengxian.com/solutions/bzoj-2877 注意二维线段树的upd()也是一个O(log n)的函数(pushdown()应该也是但没写过)。 阅读全文
posted @ 2019-03-20 09:23 HocRiser 阅读(311) 评论(0) 推荐(0)
摘要:设sm为所有p之和,套路地对每道菜建一个点,将每个厨师拆成sm个点,做的倒数第i道菜的代价为time*i。 S向每道菜连边<0,p[i]>(前者为代价后者为流量),i菜到j厨师的第k个点连<v[i][j]*k,1>,厨师到T连<0,1>。 但图太大了,于是动态加点。当厨师的第i个点被流完后再建第i+ 阅读全文
posted @ 2019-03-18 12:52 HocRiser 阅读(236) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/MashiroSky/p/6576398.html 阅读全文
posted @ 2019-03-14 08:55 HocRiser 阅读(455) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/GXZlegend/p/8611948.html 阅读全文
posted @ 2019-03-11 21:32 HocRiser 阅读(208) 评论(0) 推荐(0)
摘要:固定一种构造方法,使它能够构造出所有可能的序列。 对于一个要构造的序列,把所有点排成一串,若a[i]=a[i-1],那么从1所在弱连通块往连通块后一个点连,若所有点都在一个连通块里了,就在1所在强连通块中随便连。若a[i]<a[i-1],那么连一条从后往前的边让若干点与1所在强连通快合并。显然这样可 阅读全文
posted @ 2019-03-05 14:14 HocRiser 阅读(264) 评论(0) 推荐(0)
摘要:一个非常基础的问题,建出表达式树后在树上DP即可。预处理时记录每个位置之前每种符号最近的出现位置可以做到线性,这里直接写了$O(n^2)$算法。 注意减法和除法不满足交换律所以要取最右边的一个作为当前子树的根,而乘方要取最左边的。以及注意区分减号和负号。 阅读全文
posted @ 2019-03-03 15:52 HocRiser 阅读(859) 评论(0) 推荐(0)
摘要:学可持久化treap的时候才发现自己竟然没写过需要标记下传的主席树,然而现在发现大部分操作都可以标记永久化,下传会增大占用空间。 这题一种写法是和普通的线段树一样标记下传,注意所有修改操作(包括put())都要新建点。于是MLE了。 1 #include<cstdio> 2 #include<alg 阅读全文
posted @ 2019-02-23 09:23 HocRiser 阅读(544) 评论(0) 推荐(0)
摘要:BZOJ3585,BZOJ2120,BZOJ3757三合一。 对于树上路径问题,树链剖分难以处理的时候,就用树上带修改莫队。 这里的MEX问题,使用BZOJ3585的分块方法,平衡了时间复杂度。 剩下的就是将分块、树上莫队、带修改莫队合在一起了。大概要实现一下几个函数: 插入某值、删除某值、查询ME 阅读全文
posted @ 2019-02-20 20:04 HocRiser 阅读(185) 评论(0) 推荐(0)
摘要:树上莫队共有三种写法: 1.按DFS序列分块,和普通莫队类似。常数大,不会被卡。 2.按块状树的方式分块。常数小,会被菊花图卡到O(n)。 3.按[BZOJ1086]王室联邦的方式分块。常数小,不会被卡。唯一的缺点是较抽象,一个块可能是不连通的。 权衡一下当然还是写第三种做法,具体看代码。 然后还有 阅读全文
posted @ 2019-02-18 20:26 HocRiser 阅读(672) 评论(0) 推荐(0)
摘要:显然可以离线主席树,这里用莫队+分块做。分块的一个重要思想是实现修改与查询时间复杂度的均衡,这里莫队和分块互相弥补。 考虑暴力的分块做法,首先显然大于n的数直接忽略,于是将值域分成sqrt(n)份,每块记录块内的所有值是否在此当前区间内都已存在。 这样每次暴力从L到R分别放入这个表,最后从小到大询问 阅读全文
posted @ 2019-02-18 18:08 HocRiser 阅读(284) 评论(0) 推荐(1)
摘要:https://zhaotiensn.blog.luogu.org/solution-p4459 从上面的题解中可以找到样例解释,并了解两个人的思维方式。 A和B能从“不知道”到“知道”的唯一情况,就是根据已知条件(也就是已经说的”不知道“次数)排除手上数的所有其它合法拆分方案。 那么,设dp[i] 阅读全文
posted @ 2019-02-16 13:34 HocRiser 阅读(565) 评论(1) 推荐(0)
摘要:https://blog.csdn.net/xyz32768/article/details/83217209 不难找到DP方程与辅助DP方程,发现DP方程具有后效性,于是高斯消元即可。 但朴素消元显然无法通过,注意到f[i]的方程至多与f[i+1]有关,于是从下往上依次消去最后一个数,剩下的就是一 阅读全文
posted @ 2019-02-16 12:06 HocRiser 阅读(235) 评论(0) 推荐(0)
摘要:感觉自己做的麻烦了,但常数似乎不算差。(只是Luogu最慢的点不到2s本地要跑10+s) 感觉我的想法是最自然的,但不明白为什么网上似乎找不到这种做法。(不过当然所有的做法都是分类大讨论,而我的方法手算部分较为麻烦) 每次询问考虑每个位置的贡献,拆分成求所有长度<=R的区间的贡献次数和减去长度<L的 阅读全文
posted @ 2019-02-16 09:44 HocRiser 阅读(318) 评论(0) 推荐(0)

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