摘要: 原本这个题的正解是lct,可是自从这个题被人发现可以用分块做,然后就成为了分块的练习题233333,而且虽然lct的时间复杂度是nlogn的,可是因为常数太大,反而跑不过分块,挺有意思的 这个题我们可以设置sqrt(n)个块,然后维护块内每个元素到下一个块的最小步数和到到达下一个块的第一个点,然后这 阅读全文
posted @ 2017-10-30 18:41 那一抹落日的橙 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 这个题开始我想的时候不允许点重合,因此错了,事实上当然可以,只不过我们每个点只能记录一次答案就好…… 我们可以换一种方式理解这个题,我们假设其实起点有两个人一起向终点走去(因为显然路径可以反向走),这样就好处理多了 阅读全文
posted @ 2017-10-30 16:05 那一抹落日的橙 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 这个题是一个经典的状压dp,m<=10,意味着我们可以将每一层的状态压起来,提前预处理好,然后枚举当前在哪一层和i层 i-1层 i-2层的状态,理论上来说,这样最坏的时间复杂度是O(2^3m*n),但是因为障碍物的存在,以及预处理当中对左右格子的判断,时间复杂度会大大优于最坏情况,所以能够卡着过 阅读全文
posted @ 2017-10-30 07:06 那一抹落日的橙 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 这个题……表示不知道怎么用线段树做……空间不够用啊……只会分块了qwq 分块的思想就是把整个区间分成若干个区间,操作中,若一个小区间完全被覆盖,则把状态加入一个存储的数组,否则直接下放到每个点 阅读全文
posted @ 2017-10-29 20:30 那一抹落日的橙 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 之前一直没接触过尺取法,感觉还是可以理解的 我们可以设置一个完全满足题目要求的区间,然后从前往后不断加入元素,每加入一个元素,我们就要维护这个区间的正确性,如果加入新的元素之后,区间不满足要求,则将区间左端逐渐向右,直至这个区间符合题意为止,这样的做法是o(n)的 在这个题上,我们不断加入新的字母, 阅读全文
posted @ 2017-10-29 16:06 那一抹落日的橙 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 这个题要求货车从a到b最大能运多少货物(不能输出-1),那么自然而然的就可以想到最大生成树,这个很好求,重点在于如何快速的查找树上两点间的最大边权,这个时候我们可以运用倍增来解决,因为这两个点都在树上,显然联通它们的路径上有些边是一定要走的,这些边就是它们到最近公共祖先的边,那么答案就在这些边当中, 阅读全文
posted @ 2017-10-29 14:48 那一抹落日的橙 阅读(276) 评论(1) 推荐(0) 编辑
摘要: 这个题先离散化,然后强行用线段树统计每个点的高度,就可以了,只需要区间修改和单点查询就好,不过数据范围可能是假的……因为题目100000,然后我按照线段树开了4倍空间,然后re了,直到开了8倍…… 阅读全文
posted @ 2017-10-28 22:24 那一抹落日的橙 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 这个题最大的难点在于插入,实际上我们可以假设这是一棵早就建好的线段树,插入只是单点赋值而已 阅读全文
posted @ 2017-10-28 11:21 那一抹落日的橙 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 这个题忘了判断在新加进程之前能完成多个进程的可能性了,所以wa了半天,直到看到学长的题解 阅读全文
posted @ 2017-10-27 21:37 那一抹落日的橙 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 这个题数据范围10^6,nlogn很悬,所以我们考虑用单调队列 单调队列的性质,保证队列单调递减/递增,因此我们可以通过维护单调队列,来方便的查询区间最大值、最小值 阅读全文
posted @ 2017-10-27 11:21 那一抹落日的橙 阅读(228) 评论(0) 推荐(0) 编辑