摘要:
手写STL,卡常专用。 node为变量类型,可以自由定义,以下不再赘述。 1、stack(栈) 开一个数组,和一个top指针,压栈时++,弹栈时--即可。 2、queue(循环队列) 用两个指针,记录队头和队尾,达到两端时特判即可。 3、deque(双端队列) 和队列类似。 4、priority_q 阅读全文
摘要:
红黑树是一种二叉搜索树,单次操作复杂度上限logn,效率极高,基本用指针实现。 为了减小常数,红黑树的操作全部非递归实现。 下面系统介绍一下红黑树,包括复杂度的证明和基本操作。 1、红黑树的结构: 红黑树是二叉搜索树,满足BST性质,左儿子数值都小于当前节点,右儿子数值都大于当前节点,中序遍历单 阅读全文
摘要:
DAY 0 准备出发。 出发前教练说遇到事不慌,打电话,又听教练说了说历年赶车经历。 然后这趟路上居然没有什么大事。 在车上有些闲,于是就和其他人聊了会天,聊着聊着没意思,就用手机翻博客园。 这样就不用现场打印东西拿着了嘛。 中午到站吃饭,凭借直觉感觉二楼人超多,就在一楼买了份KFC,待回他们都下来 阅读全文
摘要:
T1: 设dp[i][j]表示考虑到第i层,到每个点路径的奇偶性状态为j的方案数。 但是转移是O(k^2)的。 把每个点的出边集合压成一个二进制数,可以将转移复杂度优化到O(k)。 还可以进一步优化。 预处理出f[i][j][0/1]表示在第i层,状态为j时,边是否取反的 阅读全文
摘要:
T1: 答案为n∑i=1abs(ai−aans)2k。 因为每次两个CPU一定选择不同的方案。 时间复杂度O(n)。 T2: 路径一定由左括号,中间一段和右括号组成。 左右括号可以用hash匹配。 中间一段的方案可以DP求出。 设$ 阅读全文
摘要:
T1: 枚举中心所在位置,每次贪心找到左右最近的一个相同字符移动。 可以用单调指针扫。 时间复杂度O(n2)。 T2: 两个数的乘积为平方数,那么这两个数各自去掉平方因子后相等。 去掉平方因子后可以用map统计答案。 对于普通的O(√p)试除法,复杂度不允许,就算将所有的质数筛 阅读全文
摘要:
T1: 断环成链并复制一倍,然后区间DP。 设状态为合并区间[l,r]的最大得分。 时间复杂度O(n3)。 T2: 最后一次向上爬不会滑下来,于是可以枚举最后一次吃的药丸。 将所有药丸按照A−B排序,每次贪心地选择最大的几个值,二分出到达的天数。 还需要判断中间高度是否严格大于C, 阅读全文
摘要:
T1: 求p∑i=0⌊iqp⌋的值。 发现从0枚举很鸡肋。 \begin{array}{ll} 2ans &=& 2\sum \limits_{i=1}^p \lfloor \frac{iq}{p} \rfloor \ 阅读全文
摘要:
T1: 高精度复杂度不允许,但是我们只关注相对大小,所以可以对答案取对数。 lg(XY)=YlgX lg(Y!)=Y∑i=1lgi 直接比较即可。 时间复杂度O(n)。 T2: 考虑对序列进行差分。 差分后区间加减转化为对相距k的两个数同时加上两个相 阅读全文
摘要:
T1: 将序列求前缀和,题意转化为对于位置i和j,满足i<j,ai<aj并且bi<bj,最大化j−i+1的值。 典型的三维偏需,可以CDQ做。 更好的做法是按一维排序,然后用数状数组维护。 时间复杂度O(nlogn)。 T2: 每次可以选择一个根,将左右子树接上, 阅读全文
摘要:
T1: 显然每个数是独立的。 无解情况的判定用裴蜀定理即可 用exgcd求出一组特解,对于每个数,只需要求出使|x|+|y|最小的一组解即可。 最优解一定取在x或y接近0时,取个min即为答案。 时间复杂度O(n)。 T2: 根据贪心思想。 考虑两个数对$(a_i,b_ 阅读全文