2019牛客暑期多校训练营(第五场)

A. digits 2

solved by sdcgvhgj 17min
做法 做过类似题,写了个bfs,其实n个n拼起来就好,因为不需要数最小


B. generator 1

solved by sdcgvhgj 100min
题意(x_n=a*x_{n-1}+b*x_{n-2} (mod p),n=10^{(10^6)})
做法 想了半天怎么(O(n))十进制转二进制,其实用十进制快速幂就好了。。。超时两发最后拆了矩阵乘
复盘 一开始总想着转化成二进制后施展,后来发现不转二进制也能做。


C. generator 2

upsolved by sdcgvhgj
题意 (x_i=(a*x_{i-1}+b) mod p),求最小的i使得(x_i=v)(q≤1e3, p≤1e9+9)
做法

  • 求出通项直接每次询问bsgs的复杂度是(O(q*sqrt p)),TLE
  • 其实把bsgs的预处理部分调大点就能更快查询了,怎么这都没想到。。。

D. generator 3


E. independent set 1

upsolved

做法 考虑 DP,(dp[mask]) 表示,(mask) 集合的点最大独立集。对 mask 集合中 id 最小的点,是否在独立集中进行枚举即可。

复盘

  • 比赛时 rdc 的意识被 memset 折半,比赛后半段在划。
  • 活鱼提出了一个很玄学的算贡献的做法,通过了样例,但复杂度解体了。
  • 比赛的时候,在梦游啊。

F. maximum clique 1

识破 发现这是个栩栩如生的二分图。

复盘

  • 一开始想施展二分图多重匹配,左集放元素,右集放“特征”,然后建不出图,解体。
  • 意识到 bitcount 奇偶性相同,海明距离不可能为 1,二分图!
  • 二分图最大独立集输出解遇到了麻烦。

G. subsequence 1

题意 给定两个0~9字符序列s,t,要求计算s中有多少个子序列其十进制表示大于t

做法

DP搞一搞

  • (f[i][j]:)表示用(s)(i)个字符匹配(t)(j)个字符的方案数,其中(s[i] = t[j])
  • 算完f数组,然后枚举答案序列与(t)(lcp),暴力后缀和维护,统计一下就好

H. subsequence 2

题意 给定一些限制条件,求满足条件字符串

做法 cf某场gym有类似的题目,做法就是根据限制条件建DAG,然后拓扑序即可


I. three points 1

solved by sdcgvhgj 174min
题意 在矩形内放一个给定边长的三角形
做法 枚举哪个角放到左下角,枚举哪条边尽可能靠下,矩形的长和宽也可以交换,共(3*2*2=12)种情况


J. three points 2

原文地址:https://www.cnblogs.com/FST-stay-night/p/11284981.html