<span>省选模拟80 题解</span>

A. 数字

如果枚举 $x\ and \ y$ 的取值,可以进行一个简单的dp。

$dp_{i,0/1,0/1,0/1,0/1}$ 表示从高到低到第 i 位,最高的几位分别是否与 $lx,rx,ly,ry$ 相同,然后这个 dp 数组的取值也只有0/1。

所以可以 dp 套 dp。

在考虑过高位之后,需要记录的信息是这 $2^4$ 种状态分别的取值,所以写一个 $2^{2^4}$ 的状压。

每次考虑 $x \and \ y$ 的第 $i$ 位取值为 $0/1$ ,分别进行转移即可。 

 

B. 跳蚤

部分分提示了一些做法,可以对于 $t_i$ 的大小进行根号分治。

对于长度较大的,跳的次数不会很多,可以暴力维护。

对于长度较小的,对于每种长度用一个数据结构维护。

直接暴力复杂度就是 $O(n^{1.5} *log )$的。

然后对于其中一种 $t_i$ 比较大可以直接用分块优化,这样可以把复杂度降到 $O(n * sqrt(nlog))$。

然后对于另外一种,不能优化的瓶颈主要在于下标出现负数并且绝对值太大,没办法分块。

但是需要注意随时只关注长度为 $n$ 的连续段,所以可以把下标放在 $\bmod n$ 意义下考虑,这样就也可以分块优化了。

两种分块优化方法并不相同。

 

C. 棋盘

暴力 dp 做法显然。

因为 dp 的状态数实际上只有 $2,3,7$,所以可以考虑用矩阵、多项式来优化这个 dp。

其实就是给矩阵的每个位置都维护一个多项式。

其实暴力做就是 $O(m log  * |S|^3)$的,其中 $|S|$ 表示状态数。

但是暴力的做法常数肯定大的飞起。

然而其实只需要最终的多项式,所以可以直接把单位根的 $i$ 次方代入转移矩阵中的 $x$,这样最终求出的就是要求的点值。

然后暴力 $IDFT$ 插值出 $x^k$ 项系数即可。

全部评论

相关推荐

程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-29 17:30
找实习找着找着就要进入7月了,马上秋招也要开始了,找实习还有意义吗?
绝迹的星:有面就面, 没面上就当日薪4位数大佬免费培训, 面上了再考虑要不要实习
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务