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
该拿的分没有拿到,能拿的分没有拿满,太菜了