摘要: 天哪这道题竟然只有一篇题解! emm,首先读题看完两个操作就已经有很明确的思路了,显然是并查集+树的直径 一波解决。 并查集不多说了,如果不了解的可以看这里. 树的直径的思路很朴实,就是两边DFS(BFS也OK)。具体先随便找一个节点,然后搜一遍,找到最远的,然后再搜一遍,这样合在一起就一定是最长的 阅读全文
posted @ 2018-10-19 21:55 Ilverene 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 恩,这是AC的第一道树状数组呢。 本蒟蒻以前遇到RMQ问题一般都用线段树或ST表,可惜ST表不支持在线修改,而线段树代码量又太大。 如今终于找到了折中方案:树状数组!!!!代码量小,还支持修改! 树状数组也就是二叉索引树,又被称为Fenwick树,然而我个人认为它不能被严谨地成为树,因为充其量只是借 阅读全文
posted @ 2018-10-19 21:53 Ilverene 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 给你一个n*n的格子的棋盘,每个格子里面有一个非负数。 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。 题目清晰明了,这道题应该用dp。 自然地想到$dp[i][j]$表示位置$(i, j)$的最大值,但是在状态转移的时候推不出来 阅读全文
posted @ 2018-10-19 21:48 Ilverene 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 假如做这道题想着用如下朴实的模拟,那肯定要WA至少4个点。 原因在于,数据大小。。。(2^63-1) 就比如说第二个点,输入数据如下: 140737488355336 140737488355456 能过才是奇迹。。。 那么显然我们应该使用位运算。 在这里先普及一下这玩意,尽管我觉得大家都会。。。 阅读全文
posted @ 2018-10-19 21:46 Ilverene 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 又是一道线段树。。。 本题其实是一道裸题。。。不明白为什么是这个难度标签。 思路很明显,用tree[i].val表示区间内开着的灯的数量。 然后常规操作(建树、查询、修改)就可以了。 最后:lazy tag是个好东西。 话说回来。。。这道题好像在洛谷上有不知一道重题,可以n倍经验了!! 阅读全文
posted @ 2018-10-19 21:45 Ilverene 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 说起来这还是蒟蒻AC的第一道省选线段树呢。 这道题和其他线段树最大的不同就是在于本题数组一直在增大。 寻常的线段树蒟蒻习惯用如下的结构体储存,然而对于此题就不行了: 这是因为这道题没有用建树,因此l, r就不存在啊! 那么解决方法就是用朴实的tree数组储存val, l和r则手动传入函数!! 所以根 阅读全文
posted @ 2018-10-19 21:43 Ilverene 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 这道题明明是裸的线段树,蒟蒻却80分了五六次。。。 根据题意,显然是维护一棵单点修改区间查询的线段树,于是直接套区间修改的代码。。。 结构体,即为树上的节点。 建树,注意:将读入放到这里来!!原本是在main里面读入然后储存到stu数组中,结果就一直80分!! 区间修改函数: 1. 如果直接是要求的 阅读全文
posted @ 2018-10-19 21:42 Ilverene 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 这道题带坑,假如没有发现肯定会爆。 首先先搜索一遍0和5,储存在数组a里面。 那么应当有2 ^ a1 +2 ^ a2 +...+ 2 ^ an。 然而这道题没那么简单,数串还可以重复k次。 因此,需要在此基础上在乘上1 + 2 ^ l + 2 ^ 2l +...+ 2 ^ (k - 1)l。其中l为 阅读全文
posted @ 2018-10-19 21:40 Ilverene 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 这是一道单点修改,区间查询的线段树。 需要实现的操作有三个:建树,更新与查询。 首先,线段树用结构体维护,如下: 其中l, r表示节点所表示区间左右端点,而val则是区间和。 Build函数如下: 这个函数就是初始化整棵线段树,没有什么特别需要解释的。 Update函数如下: x表示需要修改的节点, 阅读全文
posted @ 2018-10-19 21:38 Ilverene 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 说起来这还是本蒟蒻学完Floyd之后做的第一道题。 emm...这是一道裸题,题目大致是说有一堆岛,岛之间有海盗,因此每一条边都有一个危险指数(权重),然后给出一段必须经过的路线,求从一号小岛走到N号小岛最小的危险指数是多少。 先介绍一下Floyd算法吧: Floyd(弗洛伊德)算法是用来求解带权图 阅读全文
posted @ 2018-10-19 21:37 Ilverene 阅读(154) 评论(0) 推荐(0) 编辑