2021.11.10模拟赛总结

时间安排

7 : 50 − 8 : 20 7:50-8:20 7:508:20 把四道题看了一遍,T1好像以前做过,T2应该和kmp有关,T3感觉就是个贪心,T4就是求最长的额链。
8 : 20 − 9 : 00 8:20-9:00 8:209:00 对于T1的集合之间的并和交很容易想到位运算中的或和与,所以我就写了个bitset,但是1000的样例怎么都过不去,后来看见绝对值才意识到可能为负数,然后就整体右移到非负的区间即可。
9 : 00 − 9 : 50 9:00-9:50 9:009:50 对于T2,显然如果 n = 1 n=1 n=1,那么答案就是 n e x t [ m ] next[m] next[m],考虑 n > 1 n>1 n>1 的情况,显然最小的是 m ( n − 1 ) m(n-1) m(n1),然后考虑如何在两个相同的字符串的前面和后面分别加上一个字符串后还能相等,显然是循环,就是找最大的循环,假设长度为 v a l val val,那么答案就是 m ( n − 1 ) + v a l m(n-1)+val m(n1)+val
9 : 50 − 10 : 30 9:50-10:30 9:5010:30 考虑一个显而易见的贪心:一定是把所有 a i a_i ai 排好序后从大到小依次加入到恰好为最大的那个 a i a_i ai,这样一定的最优的,所以我就写了一个优先队列,每次取出堆顶,然后pop就行了。
10 : 30 − 11 : 20 10:30-11:20 10:3011:20 对于T4,当 u = v u=v u=v 即不加边时答案显然是(设树的直径为 v a l val val ) ⌈ v a l + 1 2 ⌉ \lceil\frac{val+1}{2}\rceil 2val+1,当有环时可以把环看成是根,那么答案就是最大的深度,具体的代码和基环树类似,就是是把环上的点都标记一下然后dfs,时间复杂度 O ( n 2 ) O(n^2) O(n2)
11 : 20 − 11 : 50 11:20-11:50 11:2011:50 去磕T1的部分分了,但是我是真的不会维护并和交,我想了好多数据结构但都不知道怎么去实现。
11 : 50 − 12 : 10 11:50-12:10 11:5012:10 提交。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值