用户工具

站点工具


2020-2021:teams:running_chicken:2020_summer_week2_report

这是本文档旧的修订版!


2020/07/18 -- 2020/07/24 周报

团队

个人

todolist(补题)

2020牛客暑期多校训练营(第三场)cjy J/K xx H zrx I

Codeforces Round #657 xx F zrx E

2020牛客暑期多校训练营(第四场)cjy E/J xx A zrx I

Codeforces Round #658 xx C zrx D cjy E

CJY

专题

比赛

题目

ZRX

专题

本周无

比赛

题目

2020牛客暑期多校训练营(第三场)I

Codeforces Round #657 zrx E

2020牛客暑期多校训练营(第四场)I

Codeforces Round #658 D

XX

专题

编辑了AC自动机初稿

编辑了后缀数组初稿

编辑了笛卡尔树初稿

比赛

2020.07.19 Codeforces Round #657 (Div. 2)

题目

本周推荐

zrx

Codeforces Round #657 zrx E

考虑构造题的时候,可以多考虑特殊种类的树,如毛毛虫,菊花图等,例如本题要求两个孩子深度差最大,毛毛虫显然是一种极优方案。

cjy

XX

Sort the Strings Revision

2020牛客暑期多校第3场H题

笛卡尔树

题意

给一个串s,一个排列p,一个数组d。第i次操作为:将$s~i-1~$的第$p~i~$位换成$d~i~$,求$s~0~$、$s~1~$、……$s~n~$的排名。

思路

对于原串的第i位,假设它是在第k次操作中被改变的,如果:

1. d[k] > s[i] ,那么$s~k~$,……$s~n~$排在$s~0~$……$s~k-1~$后面

2. d[k] < s[i] ,那么$s~k~$,……$s~n~$排在$s~0~$……$s~k-1~$前面

3. d[k] > s[i] ,那就当什么都没发生过

所以我们可以从第一位开始考虑,看它是在什么时候被改变的就可以了。但是,我们如何处理才能做到O(n)呢?按照笛卡尔树dfs序!

题目

代码

笛卡尔树

笛卡尔树的查询操作时O(logn)的,如果是用来在线查找区间最值的话并不占优势,所以以前一直觉得它没什么用。这不就真香了……

2020-2021/teams/running_chicken/2020_summer_week2_report.1595558647.txt.gz · 最后更改: 2020/07/24 10:44 由 yyxzhj