08 2018 档案

摘要:简单地偏分,艰难地AC系列。 这道题看上去很简单,直接爆搜就完事了。 不加任何剪枝的爆搜是40分(听人说的),加上一个最水的最优性剪枝就80分。 这个剪枝我没想到,如果加上去90分,是这样的: 如果当前距离剩下$s$条边还没走,如果这些边权值都为最小值1,加上去的答案还大于等于当前答案,剪枝。 最后 阅读全文
posted @ 2018-08-31 14:47 Garen-Wang 阅读(291) 评论(0) 推荐(0)
摘要:一道很水的树形dp吧。。。 这道题就是给你一棵树,然后允许你删除掉一些点和边,使得剩下的树的权值和最大。 与最大子序列类比,我们可以显然地得出:对于最大权值和为负数的子树,我们一定不会取。 所以我们可以定义一个状态:$dp[i]$表示结点$i$及其子树的最大权值和。 状态转移方程也很显然:$dp[u 阅读全文
posted @ 2018-08-31 12:00 Garen-Wang 阅读(277) 评论(0) 推荐(0)
摘要:没错,我变菜了。。。 这道题可以用贪心的递推$O(n)$地搞过去。 但是因为线段树和平衡树也要支持最大子序列,所以回来了解一波$O(nlogn)$的算法。 算法思想也非常常见:分治法。 对于一个区间$[l,r]$,我们从中间给他分开,变成$[l,mid]$和$[mid+1,r]$这两个区间。 而最大 阅读全文
posted @ 2018-08-31 11:21 Garen-Wang 阅读(177) 评论(0) 推荐(0)
摘要:时隔半年回来做模拟题。 这道题看上去就非常的暴力了,讲道理暴力+卡常72分。 但是满分也不难拿(现在的想法),我们来看看。 显然任意一条权值非零的路径,我们都可以用来免费一波。 我们可以在原图预先floyd跑一下最短路,然后对于接下来的操作,只需要改变一些东西即可。 考虑floyd的dp意义: cp 阅读全文
posted @ 2018-08-30 20:16 Garen-Wang 阅读(127) 评论(0) 推荐(0)
摘要:只能说还是不会状压dp。。 这道题看上去很熟悉,就是n国王问题,只不过多了一些限制。 题目还会给你一个地图,告诉你那些地方不能放国王,那么用二进制存下来这个状态,判断的时候&一下即可。 这道题的国王的手变长了,是上下左右各两格,所以我们在定义状态的时候应该注意,在判断不可能的解的时候要左移和右移两位 阅读全文
posted @ 2018-08-30 15:14 Garen-Wang 阅读(184) 评论(0) 推荐(0)
摘要:终于认识了什么叫做期望。。 这道题题目挺长的哈,看上去又是期望又是图论的样子。 但是图论方面只需要做个预处理,然后就可以用dp弄进答案。 在教室之间移动,有脑子的都不会走弯路更累吧,所以最短路走一波。 然后就是dp的事情了。 设$dp[i][j][0/1]$是第$i$个时间段,从开始到现在(包含现在 阅读全文
posted @ 2018-08-29 21:16 Garen-Wang 阅读(175) 评论(0) 推荐(0)
摘要:神奇的位运算啊。。。 这道题显然不能用普通的回溯法解决。我们可以使用位运算。 框架同样采用dfs,但是使用了4个东西作为参数(使用二进制): 1. 作为当前在哪个位置已经放置了皇后(1表示已经放置,0表示可以放置) 2. 作为 当前已放置的皇后的左上右下对角线对当前行的影响(1表示不能放置,0表示可 阅读全文
posted @ 2018-08-29 17:59 Garen-Wang 阅读(149) 评论(0) 推荐(0)
摘要:我想是人生第一道分块。。。 这道题看上去很简单,暴力随便打,30分拿到手。但是显然你拿30分你就炸了。 我们开始考虑优化。 发现每一个%都是风马牛不相及的,我们考虑转换。 可以发现取膜的性质: $$a \mod b = a b \times \lfloor \frac{a}{b}\rfloor$$ 阅读全文
posted @ 2018-08-28 22:40 Garen-Wang 阅读(130) 评论(0) 推荐(0)
摘要:状压dp还不熟啊。。。 这是状压dp例题后面的基础练习题了。可以看“互不侵犯”这道题。 状态表示方法类似,只不过没有第三维即数量的限制:设$dp[i][j]$为前$i$行,第$i$行状态为$j$时的方案数。 状态转移方程简直不能再简单:$dp[i][k] = sum(dp[i 1][j])$,其中$ 阅读全文
posted @ 2018-08-24 23:41 Garen-Wang 阅读(195) 评论(0) 推荐(0)
摘要:单调队列双倍经验系列。。 这道题就是所谓的滑动窗口问题。 我们对于最大值询问,就维护一个单调递减的单调队列,队头就是最优解。 最小值同理。 注意:在队列中我们要传入每个元素进入的时间,这样才能实时从队头弹出元素,才不会WA。 有一个坑点:当$k=1$时,不能对第一个元素进行特殊处理。好坑啊。。。 代 阅读全文
posted @ 2018-08-24 13:26 Garen-Wang 阅读(203) 评论(0) 推荐(0)
摘要:第二道单调队列。 这道题就是经典的滑动窗口问题了。要求你求某一个数的前$m$位中的最小元素。 先说一句话: 单调队列中,队首保存的是最优解,其实是次解,以此类推 。 所以我们可以构造一个上升的单调队列,队首弄出来的就是答案。 元素的加入不用说,就是那样子。 重点是这里多了元素的删除。因为窗口的长度有 阅读全文
posted @ 2018-08-23 17:58 Garen-Wang 阅读(214) 评论(0) 推荐(0)
摘要:人生第一道单调队列! 我曾经给自己提出过这么一个问题,但是解决不了。没想到单调队列搞一搞就好了。 这道题就是要你找出一个数中右边的最靠近的一个比它大的数字,输出它的下标。 $O(n^2)$的方法就是暴力,57分。我们看看如何使用单调队列解决。 我们可以维护一个下降的序列,在单调队列中。 如果一个新元 阅读全文
posted @ 2018-08-23 17:53 Garen-Wang 阅读(129) 评论(0) 推荐(0)
摘要:终于把去年完全不懂的题做出来了!激动! 这道题可以说是很经典了。即使去年的题,还是经典! 题目叫你维护一个矩阵,每次操作支持删除掉第$x$行第$y$列的数字,然后自动执行两个动作: 1. 向左看齐。每个同学如果左边有空位的话就向左移动一位。显然这个操作过后空位会在第$x$行第$m$列。 2. 向前看 阅读全文
posted @ 2018-08-23 14:26 Garen-Wang 阅读(143) 评论(0) 推荐(0)
摘要:新手初学状压dp,厉害了! 首先,养成一个思路:数据这么小?状压dp! 然后~~翻题解~~可以这么定义状态: 定义$dp[i][j][k]$为 前$i$行中,第$i$行状态为$j$,前$i$行已放置$k$个国王 的方案数。 显然一行的状态只与前一行的有关,所以只需要记录一行的状态。 但是一行的状态好 阅读全文
posted @ 2018-08-22 18:09 Garen-Wang 阅读(157) 评论(0) 推荐(0)
摘要:毒瘤数据!!! 我能说我被这道题卡了三四天吗。。。 这道题就是给你二维坐标,让你求总矩形面积,覆盖的面积只算一次。 本来想用二维的线段覆盖,结果因为chen_zhe大佬的数据加强过不了了。 所以只能够使用矩形切割算法。 其实理解了也简单,都不用说,自己看代码就懂了。 不过注意的是:这道题要用long 阅读全文
posted @ 2018-08-22 13:29 Garen-Wang 阅读(230) 评论(0) 推荐(0)
摘要:二进制题目,第一次正式接触二进制操作。 因为水杯只有水量相等的才能合成,所以一定是$2^i$。 这种标志可以用二进制表示,每一位刚好就是上面的表达方式。 把题意翻译到二进制数字上就是: 二进制上为1的位数数目 。 那么问题终于来了:如何数出一个二进制数字上1的多少? 这里有两种方法。 1. 暴力的。 阅读全文
posted @ 2018-08-19 00:14 Garen-Wang 阅读(116) 评论(0) 推荐(0)
摘要:很气哦这道题。 这道题虽然看上去好像是考你的高精度,其实只是考你二进制和字符串。 不说别的,看这个$1 \leq n,m \leq 5 \times 10^6$,问你虚不虚? 所以我们要找一个效率极高的算法弄过这个二进制。 其实最省时间的应该是操作3和4,乘2和除以2只需要左移和右移即可。~~但我没 阅读全文
posted @ 2018-08-16 19:10 Garen-Wang 阅读(291) 评论(0) 推荐(0)
摘要:基础还是没打牢啊。。。 这道题就是给你几个线段,问你合并后的线段总长为多少。 做这种题的时候用膝盖想就知道要离散化,以$l$为关键字从小到大排序。 其实这样排序之后,每一条线段与紧接着的下一条线段就只有三种情况: 1. 当前线段右端点比下一条线段左端点小。这种情况,这些线段就没有交集是吧,所以我们可 阅读全文
posted @ 2018-08-16 14:24 Garen-Wang 阅读(267) 评论(0) 推荐(0)
摘要:终于学到了欧拉函数,咳出血。 有一个前置题目: "P1170 兔八哥和猎人" 。 上面这道题目问你平面上的两个点是否能够无阻碍地相互看见。 答案是横坐标差绝对值与纵坐标差绝对值,这两个数 互质 ! 所以这道题也差不多,能看见的也只有互质的。 但是$N \leq 40000$,每个点算出gcd再判重好 阅读全文
posted @ 2018-08-15 13:57 Garen-Wang 阅读(169) 评论(0) 推荐(0)
摘要:普及 都不会做,我退役吧。。。 这道题给你直角坐标系上的两个点,问你他们是否能够互相看见而不被其他的点挡到。 "luogu题解" 这道题很坑,我真的以为就是判断左右八个点,结果爆零。 其实斜斜的看也能观察到。题解里面说了。 两个点之间要不被看到,是不是前面一定要有点挡着你? 那么你只要不是路径上的第 阅读全文
posted @ 2018-08-15 13:05 Garen-Wang 阅读(287) 评论(0) 推荐(0)
摘要:水题刷成模板题。。。 这道题本来方程不难想的。 设$dp[i][j]$为前$i$位中添加了$j$个乘号的乘积最大值。 状态转移方程:$dp[i][j] = max(dp[i][j], dp[k][j 1] \times sp[k + 1][i])$ 初始状态为$dp[i][0] = sp[0][i] 阅读全文
posted @ 2018-08-14 14:01 Garen-Wang 阅读(199) 评论(0) 推荐(0)
摘要:好丢脸啊!普及dp都做不出来! 这道题应该要倒推来做dp。 别人说顺推也可以,但我又不会刷表啊!刚才刷了一遍全部WA。 那我们就乖乖地倒推。 我一开始想定义状态的时候就错了。只需要定义$dp[i]$一维就可以了,因为这些任务一定会被做。 我们考虑的有两种决策: 这一分钟没有新任务的开始。那我们就歇着 阅读全文
posted @ 2018-08-13 18:04 Garen-Wang 阅读(124) 评论(0) 推荐(0)
摘要:优美的尺取法!!! 这道题看到判断相同的字符串,用pp想都知道用hash。 其实重点在第二问:如何用较小的时间复杂度来实现题目中的 最小距离包含最多要背的单词 。 这个时候就需要找到一种算法,这种算法名字叫做 尺取法 。 从 "别人的博客" 偷来三张图: 算法核心思想就是上面写的那样: 1. 初始化 阅读全文
posted @ 2018-08-13 13:55 Garen-Wang 阅读(203) 评论(0) 推荐(0)
摘要:挺难的。。 这道题以点与点的结合作为问题,问我们如果一个点被删掉,那么有几组点的有序结合不能进行。 题目给的是无向图,所以内存双倍。 不知道为什么,与割点有关系。 如果一个点不是割点,那么去掉这一个点,其他点之间的相互到达显然都不会被影响,而只有被割的点与其他点之间的才受影响。 如果一个点是割点,那 阅读全文
posted @ 2018-08-12 15:57 Garen-Wang 阅读(127) 评论(0) 推荐(0)
摘要:思路不难,但是实现过程还是错了。。。 给这道题的几个点补充一下: 可以按照顺序滴下这些油滴。 滴油滴的过程,是以滴下的点为圆心,向四周扩展出最大的半径。图形一定是个圆。 油滴碰到边界就停止流。 因为用圆表示,所以你绝对不可能弄个数组模拟!我真的菜! 我最开始的时候还想着把坐标平移,结果没必要。。。 阅读全文
posted @ 2018-08-12 00:58 Garen-Wang 阅读(130) 评论(0) 推荐(0)
摘要:弱连通模板题,不过还是不会。。。 这道题在POJ2762有,这个出题人直接翻译弄过来了。。。 弱连通的定义是:从u能到达v 或 从v能到达u,则u和v这两个点弱连通。 显然如果是强连通分量就一定是弱连通分量啦,所以可以直接缩点弄掉。 缩点后的DAG中,可能会不符合条件的不可能被我们缩掉。 那么对于这 阅读全文
posted @ 2018-08-12 00:46 Garen-Wang 阅读(145) 评论(0) 推荐(0)
摘要:这道树形dp我又跪了。。 这道题给你二叉树,共有$n 1$条边,每条边有边权,只有在父亲结点被保留的情况下才能算进答案,求保留$m$条边的答案最大值。 我拿起来就开始写,后来才发现是边权啊! ~~翻题解~~发现,还是那个老思路:边权变为点权。只要把每一条边的边权弄到终点的点权即可。 由于是树,所以不 阅读全文
posted @ 2018-08-09 17:37 Garen-Wang 阅读(134) 评论(0) 推荐(0)
摘要:第一次用set水splay好爽啊! 这道题很明显,就是弄两个平衡树(一个也可以)。 进来一个人,就去另一边找找前驱和后继,优先找前驱,找个绝对值最小的配对走。 其实用一下set就可以了啊! 使用 就可以找到x元素, 一下就得到前驱,++一下应该就得到了后继。 其实后继也直接可用 。 再根据题意模拟一 阅读全文
posted @ 2018-08-09 14:19 Garen-Wang 阅读(169) 评论(0) 推荐(0)
摘要:神级剪枝。。。 首先这道题有坑点,超过50的木棍不读入。 思想肯定就是爆搜啊!但是直接的爆搜会gg。 接下来是剪枝: 1. 你当然会聪明地取能够整除的答案来枚举嘛。。 2. 这些木棍可以从大到小排序,然后从大到小凑木棍。对答案无影响。 3. 可以记录木棍的最大值和最小值,然后枚举木棍的时候就在这个区 阅读全文
posted @ 2018-08-07 18:05 Garen-Wang 阅读(115) 评论(0) 推荐(0)
摘要:紧接着的一道树形dp。 这道题直接告诉你这是一颗树了。叶子节点是客户。 连边要费用,客户会付钱。求不亏本情况下能满足的最大用户。 还是老思路:用 表示第i个节点的子树下,取j个客户的最大值。 还是那个方程: 要不亏本,这个值肯定要大于0嘛。所以逆序搞一搞就好了。 代码: 阅读全文
posted @ 2018-08-07 18:00 Garen-Wang 阅读(115) 评论(0) 推荐(0)
摘要:第一道树形dp。挺奇怪的。 这道题选择一个点是有一个先决条件,也就是要先选他父亲的点。 画出草图可以发现就是森林嘛。。。 利用网络流的思想,建立超级根结点,把以0为父亲的都连到root去。 树形dp较线性dp的不同之处就是要dp儿子。 所以在树上要dp之前先弄一下儿子,确保他已经被dp好了就可以了。 阅读全文
posted @ 2018-08-07 14:24 Garen-Wang 阅读(99) 评论(0) 推荐(0)
摘要:真·毒瘤题! 这道题给你那么少的东西,就是要你爆搜了。 先注意一下,不然后面的做不了了,直接WA掉。 他的意思是: 我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。 所以除了最下一层的下表面之外的所有蛋糕表面积都要算进答案。 可以发现,上面的圆柱体可以按下去,所以所有的上表面等于最下的圆柱底 阅读全文
posted @ 2018-08-05 22:03 Garen-Wang 阅读(362) 评论(0) 推荐(0)
摘要:原来splay还能换钱呐! 这道题让我明白了一点:原来splay还可以不是二叉排序树啊! 本来第一次想,就认为我们应该要维护一个优先级,然后每个操作就更改一下。 但其实只要用来维护这段序列就可以了。。。 看一下这五种操作: 1. 将某元素置顶。先splay到根,如果左子树为空就无须操作,否则寻找后继 阅读全文
posted @ 2018-08-02 14:17 Garen-Wang 阅读(184) 评论(0) 推荐(0)