摘要: CF上可以提交。 链接 依然是很妙的解法。 我们可以枚举每一个出现过的边权$L$,然后把所有边的边权减掉这个$L$,如果小于$L$就变为$0$,然后跑一遍最短路然后加上$k * L$更新答案即可。 注意$L$也可以取到$0$。 这样做就是强制让出了前$k$大的边的边权,所以能计算到所有答案。 时间复 阅读全文
posted @ 2018-10-24 19:57 CzxingcHen 阅读(280) 评论(0) 推荐(0) 编辑
摘要: BZOJ 4456 听若干个大佬讲过$n$遍终于写掉了。 我把时限基本上跑满了2333…… 分治 + 最短路。 首先我们去分治这个矩形格子,找到一条长边把它对半切,对切开的边上的每一个点跑一遍最短路然后更新所有答案,接下来把询问分成两类,一类是两个端点都在切开的中间线一侧的,另一类是在两侧的。对于在 阅读全文
posted @ 2018-10-24 18:32 CzxingcHen 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 首先考虑到把集合拆成两部分然后代进去跑多源多汇最短路,这样子求出来的最小值就是答案。 然后考虑怎么拆分集合能够计算到所有的答案,其实对于规模为$n$的点拆分$log$次就够了,因为两个点的编号的二进制表示一定有一位是不同的,每一次选取所有该位为$1$的点作源,所有该位为$0$的点作汇,然后跑一跑最短 阅读全文
posted @ 2018-10-24 14:46 CzxingcHen 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 巧妙的解法。 首先直接限定每一个点不走跑$floyd$是$n^4$的,会超时,我们在$floyd$的时候加入分治思想,用$solve(l, r)$表示不考虑$[l, r]$区间的点所能得到的最短路,然后每一层处理一下就好了,直到最后一层就更新到答案中去。 时间复杂度$O(n^3logn)$。 我的代 阅读全文
posted @ 2018-10-24 12:36 CzxingcHen 阅读(224) 评论(0) 推荐(0) 编辑
摘要: BZOJ 5301 [CQOI2018]异或序列 双倍经验。 一个区间的异或值可以用前缀和来表示,$a_l \bigoplus a_{l + 1}\bigoplus a_{l + 2} \bigoplus ... \bigoplus a_r = xorSum_r \bigoplus xorSum_{ 阅读全文
posted @ 2018-10-24 08:00 CzxingcHen 阅读(177) 评论(0) 推荐(0) 编辑