考试1 反思与总结

本文详细分析了几道编程竞赛中的题目,包括T1扫雷大师的构造解法,T2质数幂的优化策略,T3积木问题的记忆化搜索与动态规划改进,以及T4寻路游戏中对于不同障碍数量的解决方案。讨论了暴力搜索、欧拉筛等基础算法以及如何进行剪枝和常数优化来提高效率。
摘要由CSDN通过智能技术生成

T1 扫雷大师(P8247)

一道构造题,考试时暴力搜了一下

25
2 9
xxxxxxxxx
.........
26
2 10
xxxxxxx.x.
..........
27
2 10
xxxxxxxxx.
..........

应该可过73 * 12的数据,但是把'x'写成'#'了,直接爆0了,40分也没有

正解:

在25 * 25 的 全是'x'的矩阵中隔着挖'.',挖一个贡献为8

于是就s % 8, 再对余数0 - 7 每种情况特判填坑挖坑就可以了

T2 质数幂(P8691)

因为T<=100,所以根号去找质数能拿到60分,但我打了个欧拉筛直接处理min{r},只有40分

正解:

只用筛到一个范围,用这个数把在这个范围的质因子除掉

那么剩下的数没有这个范围的质数,计算多少个大于这个范围的质数相乘可以达到1e18

对每种情况讨论就行

(n是一个质数,n是两个质数相乘,n是3个质数相乘...)

(如果n为2个数相乘,是完全平方数r就为2,否则为1)

(如果n为3个数相乘,是x*x*x,r就为3,是x*x*y, r就为1,是x*y*z,r也为1)

(n为更多数相乘同理)

筛1e4的质数,只判断4次方会超时,O(n/ln * t ) 大概1e8还要加上开根和判断

筛5次根号1e18,判断5次方更稳

T3 积木(P10216)

考试写了个记忆化搜索60分,数组开不下爆了

因为只会在表面上动,所以是O(n*n)级别的,改成dp,再滚动或压维

时间卡的很死,加上一些常数优化和剪枝就过了

T4 寻路游戏(P8702)

对于k = 0的情况

路径总长度怎么求?

枚举每个点,对于上下左右,路径总长为i*(i-1)/2或j*(j-1)/2......

其他区块加上(j - 1) * m + (n - j - 1) * m 还有 (i - 1) * n + (m - i - 1) * n

当k = 1

这一个障碍只会影响和他在同一行或同一列的起点

而且每次的影响绕路的值为2

当k = 2

两个障碍一起让这个起点多绕了下面一条路

如果一个障碍a在另一个的障碍b(当前行的障碍)的右上或右下,就不会影响,因为中间一定有条路可以走

如果一个障碍a在另一个的障碍b(当前行的障碍)的左上或左下,那么一定会多绕了一条路

如果在左下,首先他走这一行被b阻拦,要绕路,往下走会被a阻拦,左上同理

当k = n时

那么能够就推出能连续阻挡起点的障碍一定是点单调的,四个方向同理都是在当前方向到相反方向递增或递减的

哪一行哪一列有障碍,和连排的面积

枚举每个点讨论就行了

end

该拿的分没有拿到,能拿的分没有拿满,太菜了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值