随笔分类 -  数据结构——平衡树

摘要:XXVII.CF573E Bear and Bowling 考虑暴力的DP。设 fi,j 表示前 i 个元素中选择长度为 j 的子序列所能得到的最大收益。 考虑由 fi 转移到 fi+1。明显,一共有两种转移方式:\(f_{i,j}\righta 阅读全文
posted @ 2021-04-02 16:57 Troverld 阅读(74) 评论(0) 推荐(0) 编辑
摘要:XXV.CF702F T-Shirts 一句没有输出的调试语句忘删了,然后浪费了半小时debug\kk…… 首先观察到我们可以将所有物品按照quality为第一关键字递减排序,然后再关于price为第二关键字排序,这样所有人购买的东西就都必定是按照其一个子序列的顺序购买的。 于是把询问离线下来,然后 阅读全文
posted @ 2021-04-02 16:51 Troverld 阅读(34) 评论(0) 推荐(0) 编辑
摘要:XXII.CF477E Dreamoon and Notepad 题解 阅读全文
posted @ 2021-04-02 16:45 Troverld 阅读(47) 评论(0) 推荐(0) 编辑
摘要:XX.[APIO2018] New Home 新家 题解 阅读全文
posted @ 2021-04-02 16:41 Troverld 阅读(16) 评论(0) 推荐(0) 编辑
摘要:XII.初级版:[NOI2003]文本编辑器;进阶版:[AHOI2006]文本编辑器 两道题操作基本一致,唯一的区别就是进阶版多了一个翻转操作,因此干脆合在一起讲。 可以使用splay或fhq treap通过。个人认为fhq treap更加直观。 光标的位置,我们用一个值tar表示。 Move/ 阅读全文
posted @ 2021-04-02 16:15 Troverld 阅读(57) 评论(0) 推荐(0) 编辑
摘要:XI.CF85D Sum of Medians 这题做法有无数种,其中最暴力的一种就是用vector爆算用5棵fhq treap直接处理。比线段树要好想的多。 代码: #include<bits/stdc++.h> using namespace std; typedef long long l 阅读全文
posted @ 2021-04-02 16:14 Troverld 阅读(47) 评论(0) 推荐(0) 编辑
摘要:XXVI.[AH2017/HNOI2017]单旋 先从单旋最小/大值的操作看起。手动模拟一下的话就会发现它对整棵树的形态几乎没有影响,就是断开最小值与它父亲的连边,并用其原本的右儿子(如果存在)替代。之后,将整棵树的根设作其新右儿子。最大值同理。 然后删除最小值也类似。注意删除一个原本就在树顶的最小 阅读全文
posted @ 2021-03-31 16:42 Troverld 阅读(91) 评论(0) 推荐(0) 编辑
摘要:CXXIV.[GYM102155J]stairways 首先,考虑暴力 n3 DP——设 fi,j,k 表示当前DP到第 i 个人,且第一条楼梯上到的最晚的人在时刻 j 到达,第二条楼梯在时刻 k。 然后,观察到 j,k 中至少有一个值为前缀 阅读全文
posted @ 2021-03-31 14:49 Troverld 阅读(86) 评论(0) 推荐(0) 编辑
摘要:LVII.CF809D Hitchhiking in the Baltic States 设fi表示长度为i的LIS结尾的最小值。为了方便,设gi表示前一个物品的fi(即滚动数组); 则对于一个[l,r]的物品: 对于g<l的位置,有fi=max(gi,l) 阅读全文
posted @ 2021-03-30 16:28 Troverld 阅读(37) 评论(0) 推荐(0) 编辑
摘要:XXXVI.[BJOI2017]喷式水战改 这题类似于毒瘤数据结构题,想起来非常简单,但是写起来…… 平衡树是必须写的——这种毒瘤的维护肯定要写平衡树。 然后说一下怎么DP吧。在每个节点上维护f[i][j],表示在以该节点为根的子树上,阶段i到阶段j的最大收益。 直接在pushup时维护 阅读全文
posted @ 2021-03-30 15:49 Troverld 阅读(51) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示