上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页
摘要: 开始没看数据范围差点以为是这题了:https://www.cnblogs.com/hfctf0210/p/10911340.html 然后看到n<=1e8,怎么这么大? 所以这题需要用动态开点线段树或者动态开点splay,而我上面的那题写的树状数组,为了熟悉splay就用动态开点splay吧而且也不 阅读全文
posted @ 2019-05-23 14:29 hfctf0210 阅读(284) 评论(0) 推荐(0)
摘要: 这题90%以上的人做法为裸的平衡树,实际上根本没必要还常数大,最好的方法是二分+树状数组。具体做法是,开3倍内存,初始把中间n位赋值为1。对于每个操作:1&2、删除该位,将其丢在头/尾(开三倍内存的原因)。3、插入时直接二分查询第ask(x)+y位,换一下即可。4、直接查询。5、二分查询。复杂度O( 阅读全文
posted @ 2019-05-23 13:20 hfctf0210 阅读(223) 评论(0) 推荐(0)
摘要: 有一个数组开大会MLE开小会RE的做法:就是树套树,即树状数组套主席树,这种方法比较暴力,然而很遗憾它不能通过,因为其时空复杂度均为O(nlog2n)。 想到一种不怎么耗内存,以时间换空间,分块!单次修改(l,r)只对点对(l,r)、(l,i)和(i,r)产生影响,其中l<i<r,然后可以考虑分块, 阅读全文
posted @ 2019-05-23 12:35 hfctf0210 阅读(259) 评论(0) 推荐(0)
摘要: 第一个subtask应该还是很送分的,就是每次询问两端值的大小,(N+1)/2次即可。 考虑第二个subtask,首先还是先把最小值和最大值询问出来,然后发现不需要询问每一个数,直接将[l+1,r-1]均分成N-1个区间,因为最长区间长度一定不小于平均值,所以应该会跨越两段,若在某一段内有值即可直接 阅读全文
posted @ 2019-05-22 20:54 hfctf0210 阅读(188) 评论(0) 推荐(0)
摘要: sub1:ans=a*b%c,龟速乘即可。 #include <stdio.h> #include <stdlib.h> unsigned long long a, b, c, d; unsigned long long mul(unsigned long long a,unsigned long 阅读全文
posted @ 2019-05-22 19:17 hfctf0210 阅读(513) 评论(0) 推荐(1)
摘要: 看到平均值一眼分数规划,二分答案mid,边权变为w[i]-mid,看是否有长度在[L,R]的正权路径。设f[i][j]表示以i为根向下j步最长路径,用长链剖分可以优化到O(1),查询答案线段树即可,复杂度O(nlog2n) 不知为什么bzoj上RE,luogu上AC,暂时不管了。 #include< 阅读全文
posted @ 2019-05-22 14:43 hfctf0210 阅读(283) 评论(0) 推荐(0)
摘要: 对于操作1,显然可以使用主席树维护,然后对于一条链(x,y),假设lca为f,根为rt,则(rt,x)+(rt,y)-(rt,f)-(rt,fa[f])即为所求的链,在主席树上直接查询即可,查询方式类似于treap/splay对size的询问。 对于操作2,可以用LCT,当然也能启发式合并,每次连边 阅读全文
posted @ 2019-05-22 10:20 hfctf0210 阅读(163) 评论(0) 推荐(0)
摘要: A*板子题。我的code只能在luogu上过,bzoj上RE/MLE不清楚为啥。 蒟蒻到AFO前2个月不到的时间才学A*,A*其实就是bfs过程中进行剪支删除没必要的搜索。然后其实上这样剪支即可:如果从当前答案+从当前走到1的最短路比已有的最优解更劣,无需扩展次节点。然后k短路中,估价函数=当前节点 阅读全文
posted @ 2019-05-22 09:15 hfctf0210 阅读(213) 评论(0) 推荐(0)
摘要: 复习SAM板子啦!考前刷水有益身心健康当然这不是板子题/水题…… 很容易发现只在i位置出现的串一定是个前缀串。那么对答案的贡献分成两部分:一部分是len[x]-fa~len[x]的这部分贡献会是r-l+1;剩下一部分1~len-fa-1这部分会和i~r构成答案,写两棵线段树即可。 然后就又是板子题了 阅读全文
posted @ 2019-05-21 23:07 hfctf0210 阅读(392) 评论(0) 推荐(0)
摘要: 降智好题。本蒟蒻VP时没想到怎么做被题面迷惑了,只会20分的“好”成绩。简直自闭了。 首先显然度为0的点是白给的,根据等比数列求和公式即可求得。然后考虑这个树如果是一颗外向树,就是每个点先父亲再自己。然后直接DP,令f[i][j]表示子树i内Σw=j的概率,转移时直接用背包转移一发即可。边是正向的直 阅读全文
posted @ 2019-05-21 18:32 hfctf0210 阅读(440) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页