DAY -21
浅浅打了一场模拟赛(难度在j组3,4题左右),老师居然把最难的一题放在T1!
T1:约瑟夫环,可以选择顺时针或逆时针,问每个人的存活方案
T2:在一个带有权值的矩阵中有一个三角形,求这个三角形内数字的权值之和
T3:将一个数的阶乘分解质因数
T4:P1967 [NOIP2013 提高组] 货车运输,原题
考试时的我:第一题怎么这么难!完了,不会爆0了吧!!!
看到T1
n
≤
3000
n \le 3000
n≤3000 的范围,手推规律感觉不对,半个小时后果断跳过
看到T2,直接前缀和
O
(
n
q
)
O(nq)
O(nq) 计算,看到
n
≤
1000
,
q
≤
1
0
6
n \le 1000 ,q \le 10^6
n≤1000,q≤106 是人都傻了,完全没想到可以二维前缀和
+
+
+ 数学公式秒切好吧(完了,真成fw了)
然后做T3,想了一个暴力,然后想了半天正解没想出来…
事实上,T3真的很水,这里举个栗子解释下:
8
!
=
1
×
2
×
3
×
4
×
5
×
6
×
7
×
8
8! = 1 \times 2 \times 3 \times 4 \times 5 \times 6 \times 7 \times 8
8!=1×2×3×4×5×6×7×8
可以发现含有
2
2
2 的因子个数是
⌊
8
2
1
⌋
+
⌊
8
2
2
⌋
+
⌊
8
2
3
⌋
=
7
\lfloor \frac{8}{2^1} \rfloor + \lfloor \frac{8}{2^2} \rfloor + \lfloor \frac{8}{2^3} \rfloor = 7
⌊218⌋+⌊228⌋+⌊238⌋=7
同理可得含有
3
3
3 的因子个数…
由此可以发现规律,对于每一个质因子,可以通过
n
n
n除以它的本身、它的平方…来得到结果。
尽管
n
≤
1
0
6
n \le 10^6
n≤106,但是到了
1000
1000
1000以上的连平方都乘不到,所以时间复杂度可接受。
T4 最小生成树
+
+
+ LCA,尽管部分分都是
n
≤
1000
n \le 1000
n≤1000,但我依然勇敢的打了个
f
l
o
y
d
floyd
floyd 去骗分。
最后几分钟再反回来打T1,写了个暴力,遗憾退场
期望得分:
0
+
50
+
50
+
0
=
100
0+50+50+0 = 100
0+50+50+0=100
实际得分:
0
+
54
+
50
+
30
=
134
0+54+50+30=134
0+54+50+30=134