1101 模拟赛总结

赛时安排

7 : 50 − 7 : 55 7:50-7:55 7:507:55
看题目 T1,T3题面挺离谱…T1看第二遍才看懂每个序列的意思…T3…题面长的根本不想看…看完后,嗯是我暂时想不出来的题…
7 : 55 − 8 : 30 7:55-8:30 7:558:30
先搞有一点思路的T4,要把一个序列通过最少次数把它修改成凸的形状,首先想到的是找到它的逆序对数,然后按照这个想法搞了搞样例,还是有点卡…接着想了想把最大的数放到每一个位置,来看每一个数怎么移动最优,然后发现,你要把当前位置的数向左右移,它对答案的贡献实际上就是它左右两边比它大的数的数量的最小值…然后暴力来求出每一个数左右两边比它大的数的个数是 O ( n 2 ) O(n^2) O(n2) 的,然后就把暴力敲出来…
8 : 30 − 9 : 30 8:30-9:30 8:309:30
先不看T1和T3这两个不想看的题…来搞T2,这道题让满足K最小时最大…显然是个二分,二分答案…然后开始想如何验证答案,这个验证实际不难…想到暴力 O ( n 2 ) O(n^2) O(n2)来进行连边,直到连够边或者这一次一条边都没有连到为止,前者返回true,后者返回false,然后算了一下复杂度 O ( k ∗ n 2 l o g n ) O(k*n^2logn) O(kn2logn)(k是验证时循环的次数),然后感觉可能会挂掉…于是就开始想优化。想到了用优先队列来优化,将点度最大的先塞进队列,然后从大到小来依次连边…然后过了样例,先交了一发。
9 : 30 − 9 : 55 9:30-9:55 9:309:55
想起来还有附加的样例…然后去跑附加样例,发现第二个就挂了…开始查错…然后看样例答案发现,它的答案比我的二分时最大的边界还大…才想起来k是两个点的度数之和,边界应该卡到2*n,然后过了第二个样例,但第三个又被卡了…就先交上去了。
9 : 55 − 10 : 35 9:55-10:35 9:5510:35 想了想T1和T3的思路…想了10分钟左右…发现一点思路都没有(麻了)。于是就想着T2思路应该没问题…于是返回头继续查T2的错。第三档的数据并不是特别大,我的答案比它的答案多一…于是手查一下我的答案能不能成立…结果发现check函数里挂了,然后就想优先队列这个东西是不是会有亿点点的问题…于是开始调…(调了好久没调出来),于是乎…就开始最暴力的修改,然后样例都过了…算了算复杂度感觉正常的都能过,因为每次扫总不可能都只加1条边吧…总有一次能加上特别多的边,因此,常数k还是很小的。
10 : 35 − 11 : 35 10:35-11:35 10:3511:35
然后开始想T4的优化,先想了想线段树,但是会爆空间,于是就想到它在左右两段里排好序后和i的相对位置就是比它大的数的个数…然后写了一下,分段(要万一那个写挂了就麻了…)。
11 : 35 − 12 : 00 11:35-12:00 11:3512:00
想了想剩下两题…随便碰了碰T1的样例…然后交了。

赛后总结

0+100+0+50=150
关于T4的优化这件事…优化了个寂寞…忘记了算每次套进去的sort的复杂度,比原来暴力的复杂度还高,后来把分段去了测了一下,35pts(我真傻,我可真傻。幸好开分段了…)。然后T4的正确优化:上树状数组(比线段树简单多了!!!)…还是树状数组写的有点少…习惯性地套思路顺一点的线段树。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值