摘要:
构造题 话说挺水的题。。当时怎么就WA到自闭呢。。 先把每个位置按照最低要求填满,也就是相差1。。然后从最后一位开始把剩下的数加上,直到不能加为止。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) usin 阅读全文
摘要:
带修主席树模板题 主席树的单点修改就是把前缀和(大概)的形式改成用树状数组维护,每个树状数组的元素都套了一个主席树(相当于每个数组的元素root\[i]都是主席树,且这个主席树维护了(i lowbit(i) + 1, i)这个区间的值域信息) 修改的时候就是沿着lowbit把包含了该点的区间全部替换 阅读全文
摘要:
splay启发式合并 启发式合并其实就是把集合数量小的合并到集合数量大的里去。 怎么合并呢,直接一个一个插入就行了。。 用并查集维护连通性,find(i)可以找到所在splay的编号 这题好像还可以合并线段树来写,下次再补上。。 include define INF 0x3f3f3f3f defin 阅读全文
摘要:
线段树+平衡树 我!又!被!卡!常!了! 以前的splay偷懒的删除找前驱后继的办法被卡了QAQ 放一个在洛谷开O2才能过的代码。。我太菜了。。 include define INF 2147483647 define rint register int define full(a, b) mems 阅读全文
摘要:
平衡树 随便一个splay搞搞就行啦~~ 需要一个pos数组来查找书编号为i的节点号 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) using namespace std; typedef long lo 阅读全文
摘要:
单调队列优化dp dp真的是难。。不看题解完全不知道状态转移方程QAQ 推出方程后发现是关于j,k独立的多项式,所以可以单调队列优化。。 include define INF 0x3f3f3f3f define full(a, b) memset(a, b, sizeof a) using name 阅读全文
摘要:
单调队列优化dp 我们把状态定位F\[i]\[j]表示前i个工人涂了前j块木板的最大报酬(中间可以有不涂的木板)。 第i个工人不涂的话有两种情况: 那么F\[i 1]\[j], F\[i]\[j 1]就成为了转移状态的候选。 那如果第i个工人要涂的话,我们可以假设我们是从k+1涂到j的,根据题意可以 阅读全文
摘要:
01背包 我们对于这类选或者不选的模型应该先思考能否用01背包来解。 毫无疑问物体的价值可以看成最大的d+p值,那么体积呢?题目的另一个限制条件是d p的和的绝对值最小,这启发我们把每个物体的d p的值当作体积。 可以尝试设计状态f\[i, j, k]表示从前i个物品中选j个,体积是k的最大价值。 阅读全文
摘要:
LCT维护最小生成树 要求两点路径最大的最小,首先想到的肯定是最小生成树,再加上有删边操作,那就得用LCT维护了。 可是对于cut一条边,我们要时刻维护图中的最小生成树,需要把之前被我们淘汰的边找回,那无法处理,所以我们考虑和并查集一样的技巧,倒着离线处理问题。 我们首先把询问中要删的边全部过滤掉, 阅读全文
摘要:
几何 直线与线段相交 如果每条线段的投影在直线上有重合的点,那么我们通过这一点做一条直线必定会经过所有的线段!! 那么我们考虑把这条直线随意移动到与其中一条线段的某个端点重合,此时直线还是过了所有线段,我们再以该点为中心顺时针或逆时针旋转直线,让这条直线恰好经过另一个线段的某个端点,此时直线一定还是 阅读全文