2021.10.30模拟赛总结

时间安排

8 : 00 − 8 : 20 8:00-8:20 8:008:20 把四道题都看了一遍,T1感觉很熟悉,T2没什么思路,T3最开始以为是区间dp,T4也没什么思路。
8 : 20 − 8 : 50 8:20-8:50 8:208:50 我想了想,以前确实做过一道类似的(我没想到csp7连),在校OJ里编号2957的随机数,都是二叉树求期望,只不过一个是求叶子节点的平均深度,一个是求叶子节点的个数,我先打了两个表:对于每个 i i i 的不同形态的二叉树的个数( f [ i ] f[i] f[i])和叶子节点的总数( g [ i ] g[i] g[i])发现 g [ i ] = i f [ i − 1 ] g[i]=if[i-1] g[i]=if[i1],而且不难看出 f f f 数列是卡特兰数列,所以
a n s = g [ n ] f [ n ] = n f [ n − 1 ] f [ n ] , 又 ∵ f [ n ] = C 2 n n n + 1 , a n s = n ( n + 1 ) 2 ( 2 n − 1 ) ans=\frac{g[n]}{f[n]}=\frac{nf[n-1]}{f[n]},又 \because f[n]=\frac{C_{2n}^n}{n+1},ans=\frac{n(n+1)}{2(2n-1)} ans=f[n]g[n]=f[n]nf[n1]f[n]=n+1C2nnans=2(2n1)n(n+1)
我原以为double的精度很大,可以直接处理,但还是炸了。我明明记得double比long long精度都高。
8 : 50 − 9 : 30 8:50-9:30 8:509:30 对于T2,我先把次短路的板子码了,对于 k > 0 k>0 k>0 的情况,我的想法是再开一个 v v v 数组记录当前的 d i s dis dis 数组经过了多少个新边(即公交车),当 v [ i ] > k v[i]>k v[i]>k 时停止转移,最后输出即可,但这个想法是错的,因为你的合法的状态也可能从不合法的状态转移过来。
9 : 30 − 10 : 10 9:30-10:10 9:3010:10 T3我想的时间很久,我最开始的想法是先做一遍区间dp,然后枚举所有区间找到最大值所在的区间,然后对于剩下的区间递归接着区间dp,但复杂度爆炸,初值也不好设,就先写了一个 o p = 1 op=1 op=1 的特殊情况就去看T4了。
10 : 10 − 11 : 00 10:10-11:00 10:1011:00 对于T4,考虑最开始的边都是由大权值的点连向小权值的点,所以对于一个三元组 ( x , y , z ) (x,y,z) (x,y,z) (假设 x < y < z x<y<z x<y<z),这个三元组可以产生贡献当且仅当 x x x z z z 之间的边被翻转且 x x x y y y y y y z z z 之间的边都没被翻转或 x x x y y y y y y z z z 的边被翻转且 x x x z z z 的边未被翻转,所以就可以开一个bool数组,每次操作时异或1,最后 n 3 n^3 n3 枚举三元组判断就行。
11 : 00 − 11 : 50 11:00-11:50 11:0011:50 又去把前几道题的代码大致看了一遍,我发现T2的想法是错的,就在推T2,我大致想到了分层图,因为 k k k 很小,就开始考虑如何去建图跑次短路,但是分层图没写过多少道题,细节没处理好,就放弃了。
11 : 50 − 12 : 20 11:50-12:20 11:5012:20 又去看了看T3和T4,但也没看出什么。
12 : 00 − 12 : 40 12:00-12:40 12:0012:40 检查文件名,提交。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值