随笔分类 -  题解

摘要:这道题。。。好像是第一道我自己切出来的黑题。。。 先说一句,牛顿二项式蒟蒻并不会,可以说是直接套结论。 求诸位老爷轻喷。 这道题用 卡特兰数 搞。 卡特兰数这玩意从普及组初赛一路考到省选,十分有用。 如果不清楚这个概念的话可以看一下 "这里" 。 卡特兰数是有两种计算方法: 1) 用递推算。 2) 阅读全文
posted @ 2018-10-25 16:18 Ilverene 阅读(185) 评论(0) 推荐(0)
摘要:本题运用卡特兰数求解。 卡特兰数有两种表达方式: 1)$h_i=\sum^{k=0}_{i 1}h_kh_{i k 1}$ 2)$h_i=\frac{1}{n+1}C^{n}_{2n}$ 运用卡特兰数解题的一般步骤是: 1. 证明题目所求的数经过简化/变形后,可以表达为卡特兰数的第一种形式。 2. 阅读全文
posted @ 2018-10-25 16:18 Ilverene 阅读(142) 评论(0) 推荐(0)
摘要:说起来这是今天第三道卡特兰数了。。。 楼上的几篇题解好像都是直接看出这是卡特兰数,所以我就写一下为什么这道题可以用卡特兰数吧。 考察这样相邻的两项:$a_{2i 1}$与$a_{2i}$,根据题目的第二条原则显然有$a_{2i 1} 阅读全文
posted @ 2018-10-25 16:18 Ilverene 阅读(161) 评论(0) 推荐(0)
摘要:此类型题目有两种比较常见的做法:树链剖分和树上差分。 本题有多组修改一组询问,因此树上差分会比树链剖分优秀很多。 这里两种方法都进行介绍。 树链剖分和树上差分的本质都是将一颗树转换为一个区间,然后进行操作。 也就是说,先将一颗树变成区间,然后套用线段树/树状数组和差分。 树链剖分的具体流程不多加叙述 阅读全文
posted @ 2018-10-25 16:17 Ilverene 阅读(146) 评论(0) 推荐(0)
摘要:二分图匹配的常用算法有匈牙利算法和Dinic算法,这里只讨论前者。 所谓二分图,就是指一类能够被分成两半的图,其中每一半的点都没有任何边连接。 而二分图的匹配,就是指二分图的一个子图中任意两条边都没有公共点。(这个子图就是一个匹配) 本题求的是最大匹配数,顾名思义,就是匹配中边数最大为多少。 匈牙利 阅读全文
posted @ 2018-10-25 16:16 Ilverene 阅读(174) 评论(0) 推荐(0)
摘要:在网上某篇神奇的教程和@codesonic 大佬的标程帮助下,我又肝完了Leafy Tree,跑过来写篇题解(好像以前写过一篇?) 什么是Leafy Tree? Leafy Tree由两种节点组成:辅助节点与叶子节点。 叶子节点储存值,而辅助节点储存左右孩子中大的那个值。 注意:辅助节点必定有两个孩 阅读全文
posted @ 2018-10-25 16:14 Ilverene 阅读(351) 评论(0) 推荐(1)
摘要:看了一下题解里的zkw线段树,感觉讲的不是很清楚啊(可能有清楚的但是我没翻到,望大佬勿怪)。 决定自己写一篇。。。希望大家能看明白。。。 zkw线段树是一种优秀的非递归线段树,速度比普通线段树快两道三倍,同时代码量不大。 (当然,存在很多线段树可做zkw不可做的题) zkw线段树的核心思路就是先修改 阅读全文
posted @ 2018-10-25 16:14 Ilverene 阅读(251) 评论(0) 推荐(0)
摘要:感觉数位DP有点弱,强化一下。。。 这道题是一道比较裸的数位DP。 我们用$dp[i][j]$表示长度为$i$最高位为$j$的windy数有多少个,状态转移方程为$dp[i][j]=\sum_{abs(j k) =2}{dp[i 1][k]}$。 然后有一个小优化(其实不能算优化吧),就是算一下输入 阅读全文
posted @ 2018-10-25 16:13 Ilverene 阅读(127) 评论(0) 推荐(0)
摘要:题目:传送门 这道题根本不用lca,也没有部分分。。。 考虑求两个点xy的lca的深度。 我们将x到树根所有点的值都加1,然后查询y到根的和,其实就是lca的深度。 所以本题离线一下上树剖乱搞就可以了。 AC代码如下:718ms 17348Kib 阅读全文
posted @ 2018-10-25 15:48 Ilverene 阅读(330) 评论(0) 推荐(0)
摘要:这道题刚开始正向思维,然后处理重复的时候咕咕了。 参考了@巨型方块 大佬的题解后AC了,在这里就说几个我觉得比较重要或是容易被忽略的点,然后补充一些跳过的证明。 这道题的状态可以设为$dp[i][j][k]$,意思是长度为$i$,然后第$i$位为$j$,第$i-1$位为$k$的不是萌数的数量。 那么 阅读全文
posted @ 2018-10-24 21:39 Ilverene 阅读(202) 评论(0) 推荐(0)
摘要:这道题可以用珂朵莉树做,但是由于数据比较不随机,而我也没有手写一颗平衡树,所以就被卡掉了,只拿了70分。 珂朵莉树是一种基于平衡树的(伪)高效数据结构。 它的核心操作是推平一段区间。 简而言之,就是把之前的零零碎碎的都干掉,用一个美而饱满的大区间取代。 然后我们更新操作和查询操作就暴力遍历一遍,统计 阅读全文
posted @ 2018-10-24 21:37 Ilverene 阅读(602) 评论(1) 推荐(0)
摘要:今天模拟赛考了这道题,那就来水一篇题解吧。。。(话说提高组模拟赛考什么省选题啊??) 这道题要我们求一条线段最多能经过的三角形数量。 回想小学学过的奥数,老师告诉过我们这样一件事:`点无大小 线无粗细`。 既然如此,为什么不能把这条线段看成一条巨大的把三角形看成点呢? 那么本题的思路就出来了:我们把 阅读全文
posted @ 2018-10-24 21:32 Ilverene 阅读(375) 评论(0) 推荐(0)
摘要:这是一道看似复杂其实也不简单的思维题。 其实思路很明显。 因为这道题的数据范围比较大,有1e5的询问,如果暴力(像我考场上那样打平衡树)的话可以做到$mnlogn$。 但那样也是稳T。 经过思考之后我们可以发现,这道题必定要使用m的解法,也就是对于每一个询问$O1$求解。(总不可能$mlogn$求解 阅读全文
posted @ 2018-10-24 21:30 Ilverene 阅读(299) 评论(0) 推荐(0)
摘要:不管怎么说,这都不是道紫题吧。。。 这里采用的思想有点类似轻重链剖分。 我们按照每个节点在序列里面出现的顺序,把每一个节点连出去的边都排一个序。 这样(如果序列没错)肯定会按照序列的方式遍历完全图。 所以我们就按照这个图跑一遍BFS。 一边BFS一边查看是否符合。 程序的速度不算特别快,最优解ran 阅读全文
posted @ 2018-10-24 21:29 Ilverene 阅读(191) 评论(0) 推荐(0)
摘要:这道题原本写了一个很复杂的DFS,然后陷入绝望的调试。 看了一下题解发现自己完全想复杂了。 这里大概就是补充一些题解没有详细解释的代码吧。。。 (小声BB)现在最优解rank4(话说$O2$负优化什么鬼啊) 程序主题内容如下。 前面是读入数据没有什么好讲的。 在读入a的时候先判断一下有没有自环,有的 阅读全文
posted @ 2018-10-24 21:28 Ilverene 阅读(273) 评论(0) 推荐(0)
摘要:这道题绝不是紫题。。。 题目的意思其实是让你求一个无向无重边图的直径。 对于求直径的问题我们以前研究过树的直径,可以两遍dfs或者两边bfs解决。 对于图显然不能这样解决,因为图上两点之间的简单路径不唯一。 那怎么解决这个问题呢? 能不能把环都搞掉呢? 于是乎,我们想到了强连通分量。 因此先用tar 阅读全文
posted @ 2018-10-24 07:51 Ilverene 阅读(214) 评论(0) 推荐(0)
摘要:这道题我第一次的想法是直接判环的数量,然而事实证明实在是太naive了。 随便画个图都可以卡掉我的解法。(不知道在想什么) 这道题的正解是拓扑排序。 朴素的想法是对所有边都跑一次拓扑,但这样$O(m(n+m))$会炸,于是可以有下面的优化。 我们找到所有入度不为零的点,然后把他们每一个都删掉一条边跑 阅读全文
posted @ 2018-10-24 07:50 Ilverene 阅读(327) 评论(0) 推荐(0)
摘要:这道题看起来就是个裸的拓扑排序,抄上模板就能AC。 上面这种想法一看就不现实,然鹅我第一次还真就这么写了,然后被随意hack。 我们需要注意一句话: 现在,酒店希望能求出一个最优的菜肴的制作顺序,使得小 A能尽量先吃到质量高的菜肴: 这句话什么意思呢? 看上去它是说想要一个字典序最小的排列,但我们可 阅读全文
posted @ 2018-10-24 07:49 Ilverene 阅读(210) 评论(0) 推荐(0)
摘要:这道题开10倍左右一直MLE+RE,然后尝试着开了20倍就A了。。。窒息 对于这道题目,我们考虑使用线段树合并来做。 所谓线段树合并,就是把结构相同的线段树上的节点的信息合在一起,合并的方式比较类似左偏树什么的。 我们对于每个节点用权值线段树查询大于它的子节点数量,然后把当前节点并到它的父亲上面去。 阅读全文
posted @ 2018-10-24 07:47 Ilverene 阅读(241) 评论(0) 推荐(0)
摘要:这道题采用权值线段树合并的解法。 首先讲一下解法中出现的两个概念:权值线段树与线段树合并。 所谓权值线段树,可以理解为维护的信息反过来的普通线段树,我个人认为值域线段树这个名字其实要准确一些。 举个例子,我们将序列$1,1,2,3,4,4,4,5,6,6$中的数依次插入,那么插入完成之后的效果图大概 阅读全文
posted @ 2018-10-24 07:44 Ilverene 阅读(289) 评论(0) 推荐(0)