- easy: EI
- medium-easy: BCDGK
- medium: L
- medium-hard: AFH
A. Artifacts
B. Brackets and Dots
- 对于一个区间,从左到右扫一遍,遇到左括号进栈,遇到右括号出栈,这样就可以求答案。(因为一个左括号赖在栈里不走,会使得最长长度变小。)
- 用 set 维护左括号,右括号,与下一个括号是右括号的左括号出现位置。
- 对于区间查询 ([l,r]),不断地扔第一个“下一个括号是右括号的左括号”,和与之匹配的右括号,直到扔完。
C. Crossword
枚举横着摆放的两个字符串的相关位置
然后竖着的两个字符串优化一下再枚举就ok了
(O(24*n^3))
D. Digit
- 0一定不会成为答案
- 首先去掉末尾的连续数字9,显然不影响答案
- 然后求剩下的每一位除零外的数字减1的最大值(注:最后一个不减)
- 再对1去max输出即可
- 如此做法的正确性,可以脑补一下
E. Enormous Table
签到
F. Funny Language
G. Game of Tic-Tac-Toe
状压 DP
H. Hill and Subhill
I. It is panic?
签到
J. JokeCoin
K. King and ICPC
离线询问,分治回答跨过 mid 的所有区间查询,这些区间 $[ql,qr] $可以用 ([ql, mid], [mid+1, qr]) 合并而得。
L. Longest Simple Paths
求出最短路的那个 DAG,用 DAG 构建 root 到节点路径字典序最小的生成树,然后重心分解。