上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 27 下一页
摘要: 先kruskal求出一个最小生成树,然后对于每条非树边(a,b),从树上找a到b路径上最大的边,来把它替换掉,就是包含这条边的最小生成树 阅读全文
posted @ 2018-10-18 16:00 Ressed 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 把式子展开以后会发现,可以用线段树维护$x,y,x*y,x^2$分别的区间和 然后操作有区间加和区间修改 这个pushdown的时候,如果改和加的标记同时存在,那一定是先改再加,要不然加的标记已经被清掉了 所以在pushdown的时候,如果有改的标记,要把孩子的加的标记清掉 然后注意细节就行了(用* 阅读全文
posted @ 2018-10-15 21:26 Ressed 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 带修改区间K大值 这题有很多做法,我的做法是树状数组套权值线段树,修改查询的时候都是按着树状数组的规则找出那log(n)个线段树根,然后一起往下做 时空都是$O(nlog^2n)$的(如果离散化了的话),空间可能会被卡,但实际上点数不用开到特别大,N*200也能过 阅读全文
posted @ 2018-10-15 21:21 Ressed 阅读(190) 评论(0) 推荐(1) 编辑
摘要: 首先如果没有出现次数的限制的话,这题就是超级钢琴 但由于有了这个限制,不能简单地用前缀和 考虑顺着做的时候每个点的贡献,如果a[i]=x,x上次出现位置是lst[x](可以用一个map来记),那它会给右端点为[i,N],左端点为[lst[x]+1,i]的区间带来x的贡献 根据szr巨佬的说法,主席树 阅读全文
posted @ 2018-10-15 21:17 Ressed 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 首先大概有一个树剖+树套树的做法,但我哪会写啊 然后发现k很小,如果用线段树记每个区间前k大的的话,可以O(k)地合并 而且一个点还有可能有好多个骑士,所以要用multiset维护一下 然后树剖就好啦 阅读全文
posted @ 2018-10-15 21:03 Ressed 阅读(243) 评论(0) 推荐(0) 编辑
摘要: sbw巨佬的卡空间方法,把线段树的叶节点只记到长度为16的区间,然后在叶节点上暴力修改查询,这样点数是$\frac{N}{8}$的,可以过... orz 阅读全文
posted @ 2018-10-15 20:59 Ressed 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 给一些字符 求它们能拼成的字符串 的回文子串的个数最大值 对应的那个字符串 就是把相同的都放一起是最优的,排下序就行了... 阅读全文
posted @ 2018-10-15 20:56 Ressed 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 可以证明,如果我搜索的话,一个点最多只有两个最优状态:向左剩余步数最大时和向右剩余步数最大时 然后判一判,bfs就好了 dfs会T惨... 阅读全文
posted @ 2018-10-15 20:53 Ressed 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 如果给相同的位置连边,最后联通块数是n,最后答案就是$9*10^{n-1}$ 但直接连边是$O(n^2)$的 所以事先处理出一个ST表,每次O(1)地给那个ST表连边 最后再一点一点下放,就是把在这层的同一集合的的左儿子连到一个里,右儿子连到一个里 统计最下面那一层的联通块数量就行了 阅读全文
posted @ 2018-10-13 11:13 Ressed 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 因为只能带一个,买卖价格又一样,所以只要右边的比左边的大,就从这买下来然后带到下一个卖掉就行了(我想到别处再卖的话大不了再重新买回来嘛) 所以给max(w[i]-w[i-1],0)维护一个前缀和就行了 阅读全文
posted @ 2018-10-13 11:09 Ressed 阅读(229) 评论(0) 推荐(0) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 27 下一页