2021.10.28 模拟赛总结

时间安排

8 : 00 − 8 : 20 8:00-8:20 8:008:20 把四道题都看了一遍,T1是个dp,T2暂时没什么思路,T3类似于卡特兰数,T4也没什么思路。
8 : 20 − 8 : 50 8:20-8:50 8:208:50 对于T1,刚开始我没想区间dp,想到了线性dp,设状态 f [ i ] [ 0 / 1 ] f[i][0/1] f[i][0/1] 表示考虑完前 i i i 个,并且第i个选/不选的最大的 ∑ w \sum w w,先把整个区间排好序,当时想的转移式是 f [ i ] [ 0 ] = m a x ( f [ i − 1 ] [ 0 ] , f [ i − 1 ] [ 1 ] ) , f [ i ] [ 1 ] = m a x ( f [ p ] [ 0 ] , f [ p ] [ 1 ] ) + w p f[i][0]=max(f[i-1][0],f[i-1][1]),f[i][1]=max(f[p][0],f[p][1])+w_p f[i][0]=max(f[i1][0],f[i1][1]),f[i][1]=max(f[p][0],f[p][1])+wp,其中 p p p 为前 i i i 个中第一个r小于当前r的位置。这个dp应该是错的。(但不知道为什么)
8 : 50 − 9 : 30 8:50-9:30 8:509:30 对于T2,由于是相邻的两个点之间有联系,我就想到了邻接矩阵,接下来就显而易见了,就是在n行的邻接矩阵中找最小的行数使得它们异或起来的每一位的值都为1,就先写了一个 O ( 2 n ) O(2^n) O(2n) 的暴力,就去看T3了。
9 : 30 − 10 : 30 9:30-10:30 9:3010:30 T3是花时间最长的,我发现其实就是对于一个在左上角的点,只能向下或向右走,设其中转折点的个数为i,则此时的方案数为 2 n ∗ n − i 2^{n*n-i} 2nni 因为只要在转折点设一个喷洒点,其他的位置随意摆就行,所以难点在于求每种方案的转折点的个数以及如果当前转折点为w怎么写,我推到半点后就直接放弃去看T4了。
10 : 30 − 11 : 10 10:30-11:10 10:3011:10 对于T4,最小值最大,肯定是个二分,但是又不会判定,我对于链的理解是两端必须都是叶子节点,所以我建了一个反图,对于所有的叶子结点做了一遍bfs,找到第一个已经被修改过的节点,此时的值即为两叶子节点的最小距离,直接输出。
11 : 10 − 11 : 30 11:10-11:30 11:1011:30 我用set来优化了一下T1的 O ( n 2 ) O(n^2) O(n2) 的算法,用lower_bound在 l o g   n log\,n logn 的时间内找到了第一个小于当前r的位置(即 p p p),整体时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn),虽然结果都一样。
11 : 30 − 11 : 50 11:30-11:50 11:3011:50 又去试着写了写T3。
11 : 50 − 12 : 10 11:50-12:10 11:5012:10 检查文件,提交。

和正解的差距

T1

我认为当整个区间排好序后,此时线段大致是平均的分布在 1 − n 1 - n 1n 的区间上,由于左端点有序,所以后续的dp没有后效性,我觉得这个思路没什么问题,不知道为什么错了。刚看到n的范围觉得可能是区间dp,但是我觉得是这个是对的,就没多想。

T2

T2的话主要的瓶颈还是在如何快速找每一位上的奇数/偶数个1。

T3

T3当时没想到时dp,只觉得是对于每一种情况可以推出什么式子然后组合数+2的幂次乱搞,所以就一直在推对于每一种n,所有情况的转折点的数量的规律。

T4

T4问题主要在于对链的理解,其实当时我还是有所怀疑的,因为如果是我那种做法的话就太简单了,但是样例也过了,自己造的数据也用的是错误的方法,暴力也是错误的暴力,导致对拍也拍不出来。

考试总结

还是对dp不够敏感,想不到正确的dp式子,dp的状态也很难设,还有就是在T3上花的时间太多了,当时推的时候觉得有思路,可以推,我原本打算推20分钟就不推了,但是推上头了,直接推了将近一个小时,但就差最后的dp没推出来,导致暴力也没写,时间也浪费了,还有就是读题的时候太想当然,以及样例太少也没清晰的解释。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值