赛时时间安排
18:00~18:10 读题
通读完题面,感觉T1比较水,T3是原题,T2,T4没什么思路
18:10~18:20 码T1
直接模拟就可以,但是不小心删了而且回不去了,只能又打了一遍
18:20~19:10 调T3
因为这个题就是 P4135 作诗 几乎不变,就多个离散化,所以直接开码,调了一会就过了
19:10~19:40 想T4
因为T2确实没什么思路,于是就先来想T4,尽管是我最不擅长的期望,根据前一段学习期望的经验,想了三种可能的做法
1:根据期望的定义
2:根据期望的线性性质Dp
3:根据整数概率公式
先考虑第二种,不太会
然后再看第一种,好像可做
E
(
n
)
=
w
[
1
]
×
C
[
1
]
F
[
n
]
+
w
[
2
]
×
C
[
2
]
F
[
n
]
…
…
E(n)=w[1]\times \frac{C[1]}{F[n]}+w[2]\times \frac{C[2]}{F[n]}……
E(n)=w[1]×F[n]C[1]+w[2]×F[n]C[2]……
其中w代表可能的叶子数量,C代表这个叶子数量的出现次数,F代表n个节点的二叉树的形态总数
分母是一样的,用分配率乘起来
E
(
n
)
=
G
(
n
)
F
(
n
)
E(n)=\frac{G(n)}{F(n)}
E(n)=F(n)G(n)
其中G的含义是所有可能的叶子数目之和,重复的也要算
然后又想起来老师讲过这个
F
(
n
)
=
C
a
t
(
n
)
F(n)=Cat(n)
F(n)=Cat(n)
也就是卡特兰数,但是这个G我不太会求
于是先把卡特兰数码完,开始用打表找规律
暴力写完之后,突然发现
G
(
n
)
=
n
×
F
(
n
−
1
)
G(n)=n\times F(n-1)
G(n)=n×F(n−1)
但是我不会证,又怕我猜错结论了
但是写了就有分,于是就写了
不过这个
n
≤
1
0
9
n\leq 10^9
n≤109,就不会了,估计是一个结论或者什么矩阵快速幂
70分已经满足了
8:00~9:00 想T2
这个n太大了,根本不能建线段树
然后我又推了半个小时,但是并未有什么收获,只发现如果构造另一个序列
B
[
i
]
=
A
[
i
]
−
i
B[i]=A[i]-i
B[i]=A[i]−i那么这个序列是单调不降的
9:00~10:00
时间不多了,先写一个思路,就是把这个B用树状数组维护,然后二分查找第一个大于等于0的数,如果等于0就有,否则就没有,但是最坏情况建树还是会超时
比赛结果及感想
100+100+90+70
1:T2数据有点水,被我水过去了,看见AK的大佬写的分块,顿时觉得我傻了,分块不用建树,虽然有根号但是q很小
2:T3被卡常了,必须用常数小的莫队才行,但是我不死心,把块的大小调了调,居然就过了,真是欲哭无泪
3:T4也挺后悔的,把推出来的那个式子中的卡特兰数带进去再化简就能
O
(
1
)
O(1)
O(1)求了
赛后总结
1:当时间复杂度比较卡时,尽量用常数更小的做法,不要执迷不悟
2:分块的块的大小不一定是根号n,要选取最优的大小
3:打表出奇迹
4:只要有想法就要写下来,说不定出题人没想到就水过去了