摘要: 这道题思路比较有意思,第一次做完全没想到点子上。。。 看到题目第一反应是一道最短路裸题,但是数据范围1e5说明完全不可能。 这个时候可以观察到题目给出了一个很有意思的条件,就是说边最多比点多20。 这有什么用呢? 那么我们大胆猜想,可否将整个图划分为21条边(连接最多42个点)和一颗树?(极限情况) 阅读全文
posted @ 2018-10-25 16:22 Ilverene 阅读(233) 评论(2) 推荐(0) 编辑
摘要: 其实,这道题不用long long也能AC。 题意是给你一个矩阵,有一些格子被点亮有一些没有,每一次只能在被点亮的格子上面走。 然后你每一次都可以选择点亮一行或一排(非永久),现在问你最少点多少次可以走到终点? 思路十分好想。 我们把相邻的格子边权设为0,把不相邻但只差一行的格子之间边权设为1。(其 阅读全文
posted @ 2018-10-25 16:20 Ilverene 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 这道题调了好久,果然非洲人是得不到眷顾的吗。。。 本题采用模拟退火解决。 模拟退火是一种简洁明了而又高效的近似算法,基本上可以套到任何求最优解的题目上去。 它的原理是模拟物理中金属退火的现象,凭借选手逆天的RP跳出局部最优解,来到全局最优解。 比较常用的近似算法还有爬山和遗传,但是我个人觉得没太大必 阅读全文
posted @ 2018-10-25 16:20 Ilverene 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 所谓的左偏树,是一种可并堆的实现。 这种数据结构能够支持高效的堆合并,但是不支持查询节点等操作,因此不同于平衡树,它的结构是不平衡的。 左偏树满足如下两条基本性质: 1. 堆的性质 这也就是说左偏树每个节点的值都大于/小于它父节点的值。 2. 对于任意节点,其左儿子距离不小于右儿子距离(左偏性质) 阅读全文
posted @ 2018-10-25 16:19 Ilverene 阅读(187) 评论(1) 推荐(0) 编辑
摘要: 这道题很明显是求逆序对。 所谓逆序对,就是 逆序 的数对。 譬如在下面这个数列中: 1 2 3 4 6 5 6 5就是一个逆序对。 求逆序对的方法比较多,常见的有归并排序和树状数组(线段树当然也行)。 本题采用平衡树(leafy tree)解决。(之所以写这个才不是因为我懒呢!) 对于数列中的每一项 阅读全文
posted @ 2018-10-25 16:19 Ilverene 阅读(166) 评论(1) 推荐(0) 编辑
摘要: 这道题。。。好像是第一道我自己切出来的黑题。。。 先说一句,牛顿二项式蒟蒻并不会,可以说是直接套结论。 求诸位老爷轻喷。 这道题用 卡特兰数 搞。 卡特兰数这玩意从普及组初赛一路考到省选,十分有用。 如果不清楚这个概念的话可以看一下 "这里" 。 卡特兰数是有两种计算方法: 1) 用递推算。 2) 阅读全文
posted @ 2018-10-25 16:18 Ilverene 阅读(174) 评论(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 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 说起来这是今天第三道卡特兰数了。。。 楼上的几篇题解好像都是直接看出这是卡特兰数,所以我就写一下为什么这道题可以用卡特兰数吧。 考察这样相邻的两项:$a_{2i 1}$与$a_{2i}$,根据题目的第二条原则显然有$a_{2i 1} 阅读全文
posted @ 2018-10-25 16:18 Ilverene 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 此类型题目有两种比较常见的做法:树链剖分和树上差分。 本题有多组修改一组询问,因此树上差分会比树链剖分优秀很多。 这里两种方法都进行介绍。 树链剖分和树上差分的本质都是将一颗树转换为一个区间,然后进行操作。 也就是说,先将一颗树变成区间,然后套用线段树/树状数组和差分。 树链剖分的具体流程不多加叙述 阅读全文
posted @ 2018-10-25 16:17 Ilverene 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 二分图匹配的常用算法有匈牙利算法和Dinic算法,这里只讨论前者。 所谓二分图,就是指一类能够被分成两半的图,其中每一半的点都没有任何边连接。 而二分图的匹配,就是指二分图的一个子图中任意两条边都没有公共点。(这个子图就是一个匹配) 本题求的是最大匹配数,顾名思义,就是匹配中边数最大为多少。 匈牙利 阅读全文
posted @ 2018-10-25 16:16 Ilverene 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 在网上某篇神奇的教程和@codesonic 大佬的标程帮助下,我又肝完了Leafy Tree,跑过来写篇题解(好像以前写过一篇?) 什么是Leafy Tree? Leafy Tree由两种节点组成:辅助节点与叶子节点。 叶子节点储存值,而辅助节点储存左右孩子中大的那个值。 注意:辅助节点必定有两个孩 阅读全文
posted @ 2018-10-25 16:14 Ilverene 阅读(299) 评论(0) 推荐(1) 编辑
摘要: 看了一下题解里的zkw线段树,感觉讲的不是很清楚啊(可能有清楚的但是我没翻到,望大佬勿怪)。 决定自己写一篇。。。希望大家能看明白。。。 zkw线段树是一种优秀的非递归线段树,速度比普通线段树快两道三倍,同时代码量不大。 (当然,存在很多线段树可做zkw不可做的题) zkw线段树的核心思路就是先修改 阅读全文
posted @ 2018-10-25 16:14 Ilverene 阅读(228) 评论(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 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 题目:传送门 这道题根本不用lca,也没有部分分。。。 考虑求两个点xy的lca的深度。 我们将x到树根所有点的值都加1,然后查询y到根的和,其实就是lca的深度。 所以本题离线一下上树剖乱搞就可以了。 AC代码如下:718ms 17348Kib 阅读全文
posted @ 2018-10-25 15:48 Ilverene 阅读(317) 评论(0) 推荐(0) 编辑