XVIII Open Cup named after E.V. Pankratiev Stage 5: Eastern Grand Prix

contest link

  • 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 到节点路径字典序最小的生成树,然后重心分解。

posted @ 2019-12-06 21:57  FST_stay_night  阅读(299)  评论(0编辑  收藏  举报