Coding Competition Practice Sheet

Coding Competition Practice Sheet

线性表 #

区间最值查询(RMQ) #

Sparse Table #

  • bailian3438(Balanced Lineup) Sparse Table模板题,练习创建SparseTable类。
  • poj3368(Frequent values) Sparse Table,用动态规划先算出log2数组,对累计后的数据做Sparse Table,查询要比较两部分区间中的最值,从左侧开始的区间的最值要手动判断,右侧区间则可用ST查询。
  • hdu3486(Interviewe) Sparse Table结合二分搜索。无法找到的情况可以快速判断。
  • bailian2019(Cornfields) 二维区间最值查询,用ST数组来解决。

树状数组(Binary Indexed Tree) #

  • bailian2352(Stars) 一维树状数组模板题。星星按y升序排列,y相同,则按x升序排列。y列数据读取后并无用处。计算级别时,假定x值先读到5,再读到3时,这个x为3的新星必定不会对已经有的x为5的星星的等级产生影响,因为它的y值肯定会更大一些。最终,星星的等级即为该x位置的前缀和,算完前缀和后,再为其增1。
  • poj3067(Japan) bailian2352的数据已经排了序,而本题则要自己排序。最后结果会超出int范围,很难看出来。输入输出会影响判题。

线段树(Segement Tree) #

Number Theory #

并查集 #

字符串 #

散列表 #

  • bailian3088(Snowflake) 先用哈希函数过滤掉一部分比较对象,再逐个雪花比较。注意两片雪花比较时,有同为顺时针,或一个顺时针另一个逆时针。
  • bailian1840(Eqs) 求方程解的个数,可直接使用unordered_map.
  • bailian2002(Squares) 使用unordered_map可能会超时,需要自己实现Hash。需要知道平面直角坐标系下已知两点求正方形另外两点的坐标。

sheet:STL sheet:junior sheet:Graph sheet:Tree sheet:DynamicProgramming sheet:Search