摘要: "BZOJ" sol 维护点的连通关系和双连通关系,双连通分量就可以缩成一个点,开一个并查集搞一搞。 所以注意每一次跳父亲都要找他在并查集里面的根,即所有的fa[x]都要写成find(fa[x]) 像这种没有cut的LCT题目最好写并查集维护连通性,常数! code cpp include incl 阅读全文
posted @ 2018-02-06 20:43 租酥雨 阅读(162) 评论(0) 推荐(0) 编辑
摘要: "BZOJ" "Luogu" sol 整体二分,其实很简单的啦。 对所有询问二分一个答案mid,把所有修改操作中数字大于mid的做一个区间覆盖(区间加1) 查询就是区间查询 然后左右分一分即可 注意是第k大 然后关于树状数组的区间修改区间查询,有一篇学长的博客 "链接" ,其实原理还是蛮简单的。 比 阅读全文
posted @ 2018-02-06 20:39 租酥雨 阅读(169) 评论(0) 推荐(0) 编辑
摘要: "BZOJ" "Luogu" sol 首先发现肯定有解,又因为每个位置至多操作一次,所以最优解一定是在$[0,n]$之间 有一种可以在$O(\sum_{i=1}^{n}\lfloor\frac{n}{i}\rfloor)$复杂度求最优解的方法。 只要枚举这个数的倍数判断被操作了几次就行了。 如果最优 阅读全文
posted @ 2018-02-06 20:33 租酥雨 阅读(374) 评论(0) 推荐(1) 编辑
摘要: "BZOJ" "Luogu" sol 如果已经确定了一个序列,现要求把这个序列分成m个连续段作为答案,那么就可以用一个显而易见的DP DP显然可以得到当前序列下的最优解。 所以模拟退火~~瞎JB~~改一改序列每次DP一下就可以了 ~~据说这题random_shuffle可以AC~~ code cpp 阅读全文
posted @ 2018-02-06 20:29 租酥雨 阅读(204) 评论(0) 推荐(0) 编辑
摘要: "Luogu" sol 模拟退火呀 初始状态按顺序涂色,让同种颜色尽量放在一起。 每次随机交换两个位置,注意$\Delta$的计算 ~~瞎JB~~调一下参数就行了 可以多做几次避免陷入局部最优解 code cpp include include include include using names 阅读全文
posted @ 2018-02-06 20:24 租酥雨 阅读(186) 评论(0) 推荐(0) 编辑
摘要: "BZOJ" "Luogu" (洛谷和BZOJ上的数据范围不同,可能需要稍微调一调参数) sol 这题的参数调得我心累 模拟退火的模型可以形象地理解为:不断降温的小球在一个凹凸不平的平面上反复横跳,根据万有引力定理小球一定会停留在一个低洼的位置。在温度高的时候小球的运动幅度剧烈,同时也较容易地会接受 阅读全文
posted @ 2018-02-06 20:21 租酥雨 阅读(349) 评论(0) 推荐(0) 编辑
摘要: "BZOJ" sol 首先按横坐标排序。考虑CDQ,即考虑左边的点对右边的点的贡献。 可以发现,左边的点可以对右边的点做贡献的只有上凸壳上面的点 按照y坐标排序,如果是左边的点就更新上凸壳,如果是右边的点就在上凸壳上面二分,计算产生了多少的贡献。 但是右边的点可能会对右边的点产生阻挡。 可以对右边的 阅读全文
posted @ 2018-02-06 20:16 租酥雨 阅读(191) 评论(0) 推荐(0) 编辑