摘要:
题面 分块思想+最短路 发现对于步长小的doge会连出很多边,很容易导致大量的重边,于是对doge们根据步长分块讨论:根据步长建出分层图,然后把步长不超过某个值的doge们连到对应层上的点上,其余的doge暴力连边,最后在分层图的每层中间把边连满然后跑最短路,这样边数是$O(n$ $sqrt(n)) 阅读全文
posted @ 2018-11-14 21:17
Speranza_Leaf
阅读(186)
评论(0)
推荐(0)
摘要:
题面 考虑交换两个数的影响,发现只有夹在两个数中间的大于/小于两个数的数会产生影响,而两边的状态是不变的,然后就变成了序列分块的经典问题 注意细节.jpg 1 #include<cmath> 2 #include<cstdio> 3 #include<vector> 4 #include<cstri 阅读全文
posted @ 2018-11-14 21:09
Speranza_Leaf
阅读(140)
评论(0)
推荐(0)
摘要:
题面 来自学长的狗粮.jpg 类似蒲公英的思路,不过学到了一种新方法来获取一个数在区间出现的次数 可以预处理出$cnt[i][j]$表示从第$i$块开始到结尾$j$这个数出现了几次,然后直接后缀和相减减出来整块的答案,零散区间暴力搞一下 我偷懒没有这样做用vector二分然后被卡到10pts,只能开 阅读全文
posted @ 2018-11-14 21:07
Speranza_Leaf
阅读(117)
评论(0)
推荐(0)
摘要:
题面 大力分块艹过去了 直接分块+bitset,离散化后记录每块内每种颜色出现的次数,这样一次修改是$O(1)$的(不算离散化的话)。然而查询时因为要合并块,所以复杂度是整块长度之和这个级别的的(虽然有个bitset的$\frac{1}{32}$),直接把块大小$siz$设成$sqrt(n)$做大概 阅读全文
posted @ 2018-11-14 21:02
Speranza_Leaf
阅读(150)
评论(0)
推荐(0)

浙公网安备 33010602011771号