上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要: 题面 "Bzoj" "洛谷" 题解 考虑对操作离线后分块处理询问操作(莫队算法),将询问操作按照编号分块后左端点第一关键字,右端点第二关键字排序(分块大小为$n^{\frac 23}$),对于每一个询问操作,记下当前最后一个修改操作。 之后就是莫队的板子了。 cpp include include 阅读全文
posted @ 2019-01-22 14:46 water_mi 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题面 "Poj" 题解 下面内容引用自"李煜东 《算法竞赛进阶指南》"(对原文略有缩减,侵删): 因为矩形的大小固定,所以矩形可以由它的任意一个顶点唯一确定。我们可以考虑把 矩形的右上角顶点放在什么位置 ,圈住的星星亮度总和最大。 所以,对于一颗星星,能够覆盖住这颗星星的右上角的位置在区间$[x,y 阅读全文
posted @ 2019-01-22 14:34 water_mi 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 题面 "Poj" 题解 不难发现最后一位就是$pre[n]+1$,然后消除这个位置对其他位置的贡献,从左到右扫一遍,必定有至少一个位置可以得出,循环这个过程,$O(n^2)$出解。 cpp include include include include using std::min; using s 阅读全文
posted @ 2019-01-22 14:17 water_mi 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题面 "Poj" 题解 区间求和$+$区间修改板子,这里用分块写的 cpp include include include include using std::min; using std::max; using std::swap; using std::sort; typedef long l 阅读全文
posted @ 2019-01-22 14:06 water_mi 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 题面 "Poj" 题解 这里采用并查集的补集。 $x$表示同类集合,$x+n$表示敌人集合,$x+n\times2$表示敌人的敌人集合。 如果当前给出的是一对同类关系,就判断$x$是否吃$y$或者$y$是否吃$x$(冲突)。 如果是真话,就将所有关系连在一起。 反之,如果给出的是一对$x$吃$y$关 阅读全文
posted @ 2019-01-22 14:00 water_mi 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题面 "Poj" 题解 反正只要你判断是否满足区间的奇偶性,假设每一位要么是$1$要么是$0$好了。 假设有$S$的前缀和为$sum[]$,则有: 若$S[l...r]$中有奇数个$1$,则$sum[l 1]$与$sum[r]$不同奇偶;反之,则同奇偶 用一个带权并查集维护,设权值数组$s[i]$表 阅读全文
posted @ 2019-01-22 13:42 water_mi 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 题面 "Bzoj" "洛谷" 题解 考虑离线做法,逆序处理,一个一个星球的加入。用并查集维护一下连通性就好了。 具体来说,先将被消灭的星球储存下来,先将没有被消灭的星球用并查集并在一起,这样做可以路径压缩,然后再将被消灭的星球倒着一个一个加入,然后在$union$的时候,如果两个元素不在同一个集合中 阅读全文
posted @ 2019-01-22 13:11 water_mi 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 题面 "Loj" 题解 细节比较多的搜索题。 首先现将牌型暴力枚举出来,大概是$3^{16}$吧。 然后再看能打什么,简化后无非就三种决策:单牌,$3+x$和$4+x$。 枚举网友打了几张$3$和$4$,然后再枚举吉老师($\mathbf {orz}$)打了几张$3$和$4$。 接着枚举$3$搭配了 阅读全文
posted @ 2019-01-18 20:19 water_mi 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 题面 "Loj" 题解 先转化题意,其实这题在乘了$n!$以后就变成了全排列中的最大前缀和的和(有点拗口)。$n\leq20$,考虑状压$DP$ 考虑一个最大前缀和$\sum\limits_{i=1}^pa_i$,这个位置$p$是最大前缀和的右界当且仅当对于$\forall r p$有:$\sum\ 阅读全文
posted @ 2019-01-18 15:49 water_mi 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 题面 "Loj" 题解 普通的暴力是直接枚举改或者不改,最后在判断最后对哪些点有贡献。 而这种方法是很难优化的。所以考虑在排序之后线性处理。首先先假设没有重复的元素 cpp struct Node { int poi, id; } a[N]; bool operator include includ 阅读全文
posted @ 2019-01-18 14:03 water_mi 阅读(157) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页