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\)种情况