笛卡尔树
二分抄代码
去了18ec没资格去19ec的反向训练选手
展开
-
hdu6854 Kcats 2020hdu多校7
http://acm.hdu.edu.cn/showproblem.php?pid=6854好DP原创 2020-10-15 01:04:56 · 299 阅读 · 0 评论 -
Scaffolding 2016ICPC香港现场赛 笛卡尔树+贪心
https://open.kattis.com/problems/scaffolding学习自https://blog.csdn.net/tianyizhicheng/article/details/107960981感觉这场题目质量挺高的,中间几题都可做,不过对超高水平队伍应该偏容易了一点,这题题目意思有些问题,不然现场应该是有队过的,感觉最难的是I题(流下了不会构造的泪水),有个关键的点时你撘了一个short竹子以后,必须爬到那上面,补题的时候研究了好久的样例2都想不明白,看了一眼题解以后就会做原创 2020-09-05 16:25:28 · 283 阅读 · 0 评论 -
H-Sort the Strings Revision 2020牛客暑期多校训练营(第三场)
https://ac.nowcoder.com/acm/contest/5668/Hp[i]%10==d[i],那么经过这次操作是不变的那么把s0-sn为中会变的拿出来,按顺序建笛卡尔树,下标为k+1,val为p[k],因为越前面对字典序影响越大,而且p是0-n-1的排列,所以笛卡尔树不会有问题然后dfs笛卡尔树,每个节点将一段区间分为了两部分,根据变化后数字变大还是变小了,去考虑先dfs右子区间还是先dfs左子区间,ans[i]的编号也就是优先dfs到的顺序的编号#include<原创 2020-08-09 17:47:15 · 157 阅读 · 0 评论 -
洛谷P4755 Beautiful Pair 笛卡尔树上启发式合并 主席树计数
https://www.luogu.com.cn/problem/P4755这题思路挺简单的,写起来有一点长对整个序列构建笛卡尔树,每个节点大于他的左子树和右子树的所有值,那么就可以对笛卡尔树进行dfs,回溯时启发式合并两个子树,根节点就是最大值,枚举小的那边每个位置a[i],计算出每一个位置所能够接受的a[j]的上限,然后用主席树去另一个区间求区间内满足1-a[j]上限的个数,就是跨过a[u]并以a[u]为最大值的美丽的数对的数量#include<bits/stdc++.h>u原创 2020-08-08 21:27:06 · 248 阅读 · 0 评论 -
洛谷 P1377 [TJOI2011]树的序
https://www.luogu.com.cn/problem/P1377二叉搜索树的性质:1.父节点一定比子节点早出现。2.左子树的值<=根<=右子树的值笛卡尔树的性质:1.父节点的值一定比子节点小 2.左子树出现早于根节点早于右子树那么如果我们把二叉搜索树的值换成下标,下标换成值,那么就是一笛卡尔树了。这题要求字典序最小,显然就是求二叉搜索树的前序遍历中的权值顺序,那么也就是求笛卡尔树中的下标顺序。#include<bits/stdc++.h>using原创 2020-08-07 17:27:57 · 196 阅读 · 0 评论 -
洛谷P5854 笛卡尔树模板
https://www.luogu.com.cn/problem/P5854这题1e7的输入,只开500ms时限,太毒瘤了,写标准的笛卡尔树要加了读入优化,改成register ++i要387ms,去掉register写i++要488ms,不开读入优化过不了,可能要改成普通的单调栈,那就没有到模板题的意义了啊笛卡尔树就是下标是第一维,权值是第二维,前序遍历顺序满足下标顺序,树的结构满足第二维权值小根堆于是构建笛卡尔树的方法跟单调栈差不多,从左到右去跟前面的比较一下,然后确定他的儿子和父亲是谁原创 2020-08-07 15:32:54 · 413 阅读 · 0 评论