- 博客(12)
- 收藏
- 关注
原创 洛谷3261 [JLOI2015]城池攻占 (可并堆+左偏树)
一道yy好题。qwq首先根据题意,不难发现,我们要对于每个点维护一个小根堆,然后每次对于每一个点来说,如果当前的堆顶的骑士的攻击力小于城池的生命值,那就弹出栈。但是对于修改操作,我们应该怎么做呢?其实可以直接像线段树那样,类似打标记的方式去做,但是记得要多pushdownpushdownpushdown几次来避免一些玄学错误。nline void pushdown(int x){ ...
2019-01-23 20:07:56 208
原创 洛谷1552 [APIO2012]派遣 (可并堆+左偏树)
果然我已经是啥题都不会的人了qwq首先,题面描述的有点花里胡哨首先,对于原题的上下级关系构成了一棵树,那么实际上,我们对于一个节点,就是求他的子树内部,最大化忍者的数目满足总薪水小于等于给定值。qwqqqqq那么应该怎么做呢。我们可以对于每个节点,维护一个按照薪水排序的大根堆,然后同时维护堆里面的元素的个数以及和,如果当前的和超过了限制,那么优先弹出总薪水比较大的,因为只有数目才会影响最...
2019-01-23 16:14:21 142
原创 洛谷2713 罗马游戏(可并堆,左偏树)
模板题没什么好说的。// luogu-judger-enable-o2#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<queue>#include<cmath&g
2019-01-21 21:42:45 174
原创 洛谷3377 左偏树(可并堆)学习笔记
qwq左偏树真是个神奇的东西我还是wei的啊首先可并堆,顾名思义,就是支持合并的堆。这里我们用左偏树来实现这个过程。我们定义dis[i[dis[i[dis[i[表示iii这个节点最近的一个叶子距离这个点的长度是多少。那么左偏树满足一个节点的左儿子的disdisdis大于等于右儿子。除此之外,左偏树还具有一些别的性质1.具有堆的性质2.当前节点的距离等于右儿子的距离+1。(因为左偏树,...
2019-01-21 21:40:26 167
原创 洛谷5024 保卫王国 (动态dp)
qwq非正解。但是能跑过。1e5 log方还是很稳的啊首先,考虑最普通的dpdpdp令dp1[x][0]表示不选这个点,dp1[x][1]表示选这个点的最大最小花费dp1[x][0]表示不选这个点,dp1[x][1]表示选这个点的最大最小花费dp1[x][0]表示不选这个点,dp1[x][1]表示选这个点的最大最小花费那么dp1[x][0]=∑dp[p][1]dp1[x][0]=\su...
2019-01-21 09:44:52 167
原创 洛谷4631 [APIO2018] Circle selection 选圆圈 (KD树)
qwq纪念AC450一开始想这个题想复杂了。首先,正解的做法是比较麻烦的。qwqq那么就不如来一点暴力的东西,看到平面上点的距离的题,不难想到KD−TreeKD-TreeKD−Tree我们用类似平面最近点对那个题一样的维护方式,对于一个子树内部,分别维护每一个维度的最大值和最小值,还有半径的最大值。然后sortsortsort一遍,从半径大到小依次queryqueryquery,每次q...
2019-01-16 21:13:12 348
原创 bzoj5210最大连通子块和 (动态dp+卡常好题)
卡了一晚上,经历了被卡空间,被卡T,被卡数组等一堆惨惨的事情之后,终于在各位大爹的帮助下过了这个题qwqqq(全网都没有用矩阵转移的动态dp,让我很慌张)首先,我们先考虑一个比较基础的dpdpdp我们令dp1[i]dp1[i]dp1[i]表示必须选iii的最大连通块的权值是多少。然后令ans1[i]ans1[i]ans1[i]表示iii的子树中的dp1dp1dp1的最大值。那么该怎么计算...
2019-01-16 11:40:42 356
原创 bzoj4712 洪水(动态dp)
看起来很模板的一个题啊qwq但是我还是wei题目要求的是一个把根节点和所有叶子断开连接的最小花费。还是想一个比较naivenaivenaive的做法我们令dp1[i]dp1[i]dp1[i]表示,在iii的子树内,把叶子全都隔断的最小代价,那么dp1[i]=max(∑dp1[p],val[i])dp1[i]=max(\sum dp1[p],val[i])dp1[i]=max(∑dp1[...
2019-01-15 14:31:08 213
原创 洛谷4719 【模板】动态dp 学习笔记(ddp 动态dp)
qwq大概是混乱的一个题。首先,还是从一个比较基础的想法开始想起。如果每次暴力修改的话,那么每次就可以暴力树形dp令dp[x][0/1]dp[x][0/1]dp[x][0/1]表示xxx的子树中,是否选择xxx这个点的最大权独立集。如果这个点不选,那么他的所有儿子都是可以选的。如果这个点选的,那么只能加上他的所有儿子不选的收益。因为收益可能存在负数,所以要特别处理一下void dfs...
2019-01-14 21:54:35 308
原创 洛谷4895 独钓寒江雪 (树哈希+dp+组合)
qwq首先,如果是没有要求本质不同的话,那么还是比较简单的一个树形dp我们令dp[i][0/1]dp[i][0/1]dp[i][0/1]表示是否iii的子树,是否选iii这个点的方案数。一个比较显然的想法。dp[i][0]=∏(dp[p][0]+dp[p][1])dp[i][0]=\prod (dp[p][0]+dp[p][1])dp[i][0]=∏(dp[p][0]+dp[p][1])...
2019-01-14 20:53:19 168
原创 CF739E Gosha is hunting(费用流/凸优化dp)
纪念合格考爆炸。其实这个题之前就写过博客了,qwq但是不小心弄丢了,所以今天来补一下。首先,一看到球的个数的限制,不难相当用网络流的流量来限制每个球使用的数量。由于涉及到最大化期望,所以要使用最大费用最大流。我们新建两个点ss,ttss,ttss,tt,分别表示两种球。那么我们现在考虑应该怎么计算期望呢。首先,如果假设如果对于一个怪物用一个球,那么连边也就比较容易了对于一个怪物xxx...
2019-01-14 18:58:56 341
原创 CF125E MST company (凸优化+MST)
qwq自闭的一个题首先,我们可以把原图中的边,分成两类,一类是与111相连,另一类是不与111相连。原题就转化成选择kkk条关键边的MSTMSTMST那么我们可以按照tree I 那个题的思路来考虑这个题。由于是MSTMSTMST,所以函数满足下凸,那么对于这种恰好选kkk个的问题,我们可以直接凸优化。erferferf一个值,然后把所有与1相连的边都加上这个值。通过排序的时候把同权值...
2019-01-01 09:37:40 541
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人