上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 65 下一页
摘要: 一个暴力的做法是把边看成点,之间的边权为两边的较大权值,最短路即可。但这样显然会被菊花图之类的卡掉。 考虑优化建图。将边拆成两个有向边,同样化边为点。原图中同一条边在新图中的两个点之间连边权为原边权的边。对于原图同一点的出边按权值从小到大排序,权值相邻的由小到大连边权为差值的边,由大到小连边权为0的 阅读全文
posted @ 2018-10-23 21:02 Gloid 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 用trie求出前缀最大区间异或和、后缀最大区间异或和即可。注意空间是nlog的。 阅读全文
posted @ 2018-10-23 18:39 Gloid 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 贪心的按位考虑。如果所有数在某一位上有奇数个为1,显然无论如何划分这一位最终都会为1;否则将每一部分都划分为偶数个1就能保证最终该位为0,可以标记上哪些位置可以作为划分点(当然也要满足之前可为0的位上是0),如果剩余划分点个数>=m-1则说明该位可为0。 阅读全文
posted @ 2018-10-23 18:24 Gloid 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 相当于一个有负体积的背包。显然如果确定了选哪些,应该先把体积小的挂上去。于是按体积从小到大排序,就是一个裸的背包了。 阅读全文
posted @ 2018-10-23 00:58 Gloid 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 显然相当于使序列变成单峰。给原序列每个数按位置标号,则要求重排后的序列原标号的逆序对数最少。考虑将数从大到小放进新序列,那么贪心的考虑放在左边还是右边即可,因为更小的数一定会在其两侧,与它自身放在哪无关。对于相同的数,一定可以将其安排至之间无逆序对,特判一下。 阅读全文
posted @ 2018-10-22 23:26 Gloid 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 如果分块的话与区间众数没有本质区别。这里考虑莫队。 显然莫队时的删除可以用堆维护,但多了一个log不太跑得过。 有一种叫回滚莫队的trick,可以将问题变为只有加入操作。按莫队时分的块依次处理,一块中左端点的差不超过√n,右端点单调递增。首先将右端点也在该块中的询问暴力处理。然后令指针l在下一块开头 阅读全文
posted @ 2018-10-22 21:26 Gloid 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 如果要询问的某个纵坐标为inf的点左边是否有点能与其构成所要求的矩形,只要用个单调栈就可以了。可以想到用分治来制造单调性。 按横坐标排序,每次考虑跨过分治中心的矩形。考虑右边的每个点能与左边的哪些点构成矩形。首先这受到右边点的限制,对于每个点用set求出这个范围。然后对所有点按纵坐标从大到小排序,维 阅读全文
posted @ 2018-10-22 19:52 Gloid 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 前缀和后相当于查询三维空间某条直线,用两维坐标减去另一维就变成查询二维点了,map即可。 阅读全文
posted @ 2018-10-22 15:12 Gloid 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 事实上每次走到横坐标或纵坐标最接近的点一定可以取得最优方案。于是这样连边跑最短路就可以了。 阅读全文
posted @ 2018-10-22 01:04 Gloid 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 前缀gcd的变化次数是log的,考虑对每一种gcd查询,问题变为查询一段区间是否存在异或前缀和=x/gcd。 无修改的话显然可以可持久化trie,但这玩意实在没法支持修改。于是考虑分块。 对于每一块将其中所有块内异或前缀和排序。查询时先看这块与上一块相比gcd有没有变化,如果有对其中每个位置暴力查询 阅读全文
posted @ 2018-10-21 22:06 Gloid 阅读(165) 评论(0) 推荐(0) 编辑
上一页 1 ··· 38 39 40 41 42 43 44 45 46 ··· 65 下一页