摘要: 前缀gcd的变化次数是log的,考虑对每一种gcd查询,问题变为查询一段区间是否存在异或前缀和=x/gcd。 无修改的话显然可以可持久化trie,但这玩意实在没法支持修改。于是考虑分块。 对于每一块将其中所有块内异或前缀和排序。查询时先看这块与上一块相比gcd有没有变化,如果有对其中每个位置暴力查询 阅读全文
posted @ 2018-10-21 22:06 Gloid 阅读(167) 评论(0) 推荐(0) 编辑
摘要: A:真的懵逼了。冷静了半天之后决定二分一下答案,然后先a安排上尽量小的再贪心地一个个扩大。40min才过。这个做法非常怂的以代码复杂度和时间复杂度为代价换取了比较稳的正确性,事实上由于1~n可以组合出1~n*(n+1)/2的所有数,只要从大到小贪心地放就可以了。 #include<iostream> 阅读全文
posted @ 2018-10-21 19:43 Gloid 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 首先显然地如果某个点超过了最大负载,删掉它仍然是不合法的。删除某个点当前只会对其父亲产生影响,同一个节点的儿子显然应该按代价从小到大删。考虑如果删掉某个点之后他的父亲不能再删了,我们损失了父亲这个点,但不会对其他点产生任何影响;而若删掉父亲,其儿子节点中能够删除的节点肯定会更少,且会对爷爷造成负面影 阅读全文
posted @ 2018-10-21 13:54 Gloid 阅读(164) 评论(0) 推荐(0) 编辑