- 博客(12)
- 收藏
- 关注
原创 BZOJ 4199 NOI2015品酒大会
ProblemBZOJ 题意:∀i∈[1,n−1]∀i∈[1,n−1]\forall_{i\in[1,n-1]},求最长公共前缀的长度为i的后缀有多少对,并求权值乘积最大为多少Solution这道题的前置题目应该是AHOI2013 差异在parent树上,祖先表示了这个节点的后缀,那么两节点的lca,就是最长公共后缀。 那么考虑翻转原串,建出后缀自动机,拓扑排序之后再跑dp,注...
2018-06-30 14:17:07 197
原创 BZOJ 1367 BOI2004数字序列
ProblemBZOJSolutiondalao安利的一道论文题。。为了方便思考,我们可以把ai减去i,把严格递增的条件转化为非严格递增的条件。不妨先考虑特殊情况,a如果是递增的,那么直接bi=ai即可。如果是递减的,就取它的中位数,原因后文再讲。先考虑一个简化的问题,是一个初中数学题,求使得|A−x|+|B−x|(A≤B)|A−x|+|B−x|(A≤B)|A-x|+|B-...
2018-06-28 17:35:37 279
原创 Codeforces 700E Cool Slogans
ProblemCodeforcesSolution先建出后缀自动机,然后我们可以按照right集合来dp。这个right集合可以用动态开点的线段树+线段树合并乱搞。然后dp部404 NOT FOUND注意一下pos的转移,hhh我调这个调了40minCode#include <cstring>#include <cstdio>using ...
2018-06-26 17:36:31 448
原创 UOJ 164 清华集训2015 V
ProblemUOJ 要求你支持五个操作1.区间加x2.区间减x,然后对区间做ai=max(ai,0)ai=max(ai,0)a_i=max(a_i,0)的操作3.区间修改成x4.单点询问当前值5.单点询问历史最大值Solution吉司机线段树的一道题,可以参见2016年吉如一的论文我们用线段树维护两个东西,一个是当前,一个是历史,每个用结构体来描述,(x,y)表...
2018-06-21 10:56:05 293
原创 LOJ6435 PKUSC2018星际穿越
ProblemlojSolution一个显而易见的结论,对于一个xi,要到达1号节点的最优路径只有第一步可能往右走,后面的步必定是往左走。 那么我们可以dp出整个右边可以走到的最左边的位置mn[i],mn[i]显然小于i,而且如果这个最优位置不是出自i本身,那么也就意味着要往右走一步,再往左走。 先dp出最优的位置,然后i就继承mn[i]的答案,做一个区间修改即可,可以用主席树实现...
2018-06-18 20:37:16 711
原创 BZOJ4859 BJOI2017机动训练
ProblemBZOJSolutionSalamander安利的一道题目。。思路很神的一道题目对于平方,我们可以转化为选两条路径都为某个方案的方案数。注意到这个机动路径的定义,其实在确定了x,y之后,路径就是只能朝一个象限(虽然还包括了坐标轴)的方向走,那么我们不妨设g[x1][y1][x2][y2]表示第一条路径的方向向量为(x1,y1),(x2,y2)的方案数。然后我们可以记忆...
2018-06-17 15:21:32 588
原创 BZOJ5287 HNOI2018毒瘤
ProblemBZOJSolution顾名思义,如果不是暴力分比较多,的确是一道很毒瘤的题。。题面中所谓的联通操作就是保证互斥的连边后,是一个连通图。我们从树的状态考虑起。不妨设f[x][1/0]表示子树x中x选/不选时合法的方案数。 容易得到转移方程f[x][1]=∏f[son][0],f[x][0]=∏(f[son][0]+f[son][1])f[x][1]=∏f[son...
2018-06-13 14:39:56 363
原创 Codeforces613D Kingdom and its Cities
ProblemCodeforcesSolution套路虚树搞一下,然后我们考虑树形dp。 我们不妨设f[x]表示任意一个关键点都无法到达子树根的最小花费,g[x]表示允许有一个关键点到达子树根的最小花费。我们需要分情况进行讨论。对于关键点,无法满足f[x]的情况,我们设成INF。而为了满足g[x],那么任意一个子树都无法到达其根,也不需要再砍断,即: f[x]=INFf[x...
2018-06-11 21:44:10 350
原创 BZOJ3572 HNOI2014世界树
ProblemBZOJSolution虚树+dp,但是dp挺难写的 写什么dp咯,分情况讨论+模拟可是O(n)的详细说一下dp吧。我们设bel表示这个点最近的关键点,直接dp儿子,然后比较子树中的答案是否更优。但是最近的关键点可能并不在子树中,那么我们还需要重新再判断一下,是否父亲的最优答案可以更新儿子的最优答案。可以用两边dp解决。 怎么统计答案?不妨直接对虚树上的边进行考虑...
2018-06-11 14:31:20 217
原创 BZOJ2626 JZPFAR及kd-tree入门
ProblemBZOJ权限题 洛谷Solutionhdu4347和这道题也很类似。我们用kd-tree来做,用一个堆来维护可能成为k远的几个点,不断更新答案。优先搜可能更远的子树,再根据估价函数判断需不需要搜另一个子树。注意重载小于号和估价函数不要写错了。注意当现在的节点少于k时仍然不能进入空子树,否则可能会影响答案。Code#include <algori...
2018-06-10 18:07:33 526
原创 UOJ207 共价大爷游长沙
ProblemUOJSolution这道题可以维护子树hash值来做。这个hash函数要求仅与各个数的值有关。 如果边(x,y)在所有的路径上,那么我们可以认为在子树x/y中,hash值是要等于某个值的(这个值我们可以维护总的hash值)。而一个比较好的hash就是异或和,为了不冲突我们可以用2的幂来赋值,但注意到路径可能比较多,所以直接rand一个大数,冲突的概率也是比较小的。...
2018-06-08 21:52:15 410 1
原创 BZOJ3626 LNOI2014LCA
ProblemBZOJSolution就是给定询问l,r,z求∑ri=ldeep(lca(i,z))∑i=lrdeep(lca(i,z))\sum_{i=l}^r deep(lca(i,z)) 我们考虑把deep的含义转化一下,它就是表示某个点到根节点需要经过几个节点 那么把路径上的deep差分之后就变成了一条1,然后我们做一个区间询问和即可得到deep那么我们就用这种思想...
2018-06-04 22:37:20 341
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人