摘要: 有可能当树中有键值相同的节点时,貌似是要对Split和Merge均进行复制的,本人实测:只在Split的时候复制得到了一个WA,但只在Merge的时候复制还是AC,可能是恰好又躲过去了。有人说假如确保键值唯一,或者在一个节点保存相同键值的多个点的实现,则只需要在其中一个进行复制,因为从根到达叶子的路 阅读全文
posted @ 2019-11-25 13:31 KisekiPurin2019 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 一个只供删除的双向链表,为了简单不再引入head节点,而且也不进行next的套娃操作。空间使用略微多了一些,但是无伤大雅。 正常的链表是单向链表,删除操作是删除当前节点的下一个节点,没有必要。全部写双向的。b事多还可以写个垃圾回收。 并查集实现的伪链表。用并查集实现的伪链表虽然删除不是O(1)的,但 阅读全文
posted @ 2019-11-25 00:50 KisekiPurin2019 阅读(157) 评论(0) 推荐(0) 编辑
摘要: ```cpp struct Query { int id, pos, ans; } q[200005]; bool cmp1(const Query &q1, const Query &q2) { return q1.pos < q2.pos; } bool cmp2(const Query &q1, const Query &q2) { return q1.id < q2.id; } void 阅读全文
posted @ 2019-11-24 23:35 KisekiPurin2019 阅读(149) 评论(0) 推荐(0) 编辑
摘要: A Math Problem 题意:给n条线段[l,r],求再加一条可以退化成点的线段,与所有线段各至少有一个公共点。 题解:求出最右边的左端点和最左边的右端点,左端点 右端点,则说明你的这个线段要把这两个连起来,否则你的线段就是现在的[左端点,右端点]上的随便一个点。 E 暂缺 F1 Wrong 阅读全文
posted @ 2019-11-24 22:39 KisekiPurin2019 阅读(207) 评论(0) 推荐(0) 编辑
摘要: A New Building for SIS 题意:英语阅读,ab之间都有通道。 复杂度是nmlogn,这有个鬼办法哦。假如预处理每个x中每个派别的后缀,然后后面的贪心使用平衡树(nlogn),可能渐进复杂度会好看一点,但应该不会更快。 阅读全文
posted @ 2019-11-23 01:37 KisekiPurin2019 阅读(142) 评论(0) 推荐(0) 编辑
摘要: A The Rank 题意:定义排名为:先排总分,总分相同排id,求id为1的人的rnk。 题解:implement 一种复杂度更低的方法是:对于每种串s,保存其高6位在t的低6位的不同取值下的贡献,然后对于t串,就可以遍历s的高6位然后直接取出来,复杂度缩减了2^6(对于每个t只需要枚举其一半了) 阅读全文
posted @ 2019-11-21 21:09 KisekiPurin2019 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 要先理解前缀函数的定义,前缀函数 $\pi(i)$ 表示字符串 $s[0,i]$ 的同时是其最长真前缀及最长真后缀的长度,简单来说就是这个 $s[0,i]$ 首尾最长的重叠长度(不能完全重叠)。 注意这里的字符串都是从0开始计数的。 阅读全文
posted @ 2019-11-21 12:19 KisekiPurin2019 阅读(101) 评论(0) 推荐(0) 编辑
摘要: 又是回忆场。 A Death Note 题意:有一本笔记,你在第i天连续写ai个字,每写满m个字强制翻页(不管还要不要写),求第i天翻了多少页。 题解:那么当前的页数就是下整+1(其实不加也可以,从0开始),直接模拟即可,我当时写的什么东西? 注意溢出。 E Rest In The Shades C 阅读全文
posted @ 2019-11-21 11:33 KisekiPurin2019 阅读(144) 评论(0) 推荐(0) 编辑
摘要: A Points in Segments 题意:implement 这样会重复,比如 答案应该是2,但是上面这样会输出3。 解决的办法要利用字符串里面的KMP算法的next数组,得先放一下。 阅读全文
posted @ 2019-11-20 19:45 KisekiPurin2019 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 回忆场,以前打过,但貌似现在还是不会D。 A Piles With Stones 题意:有n堆石头,每堆石头有ai个。数列a,b记录了每堆石头的数量。已知两次记录至今可以有任意个人选择移动一颗石头或者拿走一颗石头,问是否合法。 题解:求和。 启示:不需要把高度也设为状态之一,把高度的决定让给其他状态 阅读全文
posted @ 2019-11-20 17:31 KisekiPurin2019 阅读(142) 评论(0) 推荐(0) 编辑