牛客比赛2.5
比赛链接
9题,就看结果来说还是不错的,但是过程我是很不满意的。。
A,B签到题,没什么说的必要。
C题,数据结构题,很烦,trie树带查询,码起来有些麻烦,考试的时候没有开。
其实思路很简单,用01trie树,对每一个点,查找比他小的和它异或起来最大的数字,这个东西在trie树上就是一个贪心,O(logn)级别单次查询,总体O(nlogn)。
保证查找的数字比它小可以用标记,也可排序之后可持久化01trie树,这个会好写一些的,然后总体就这样。
可能数据结构的问题吧,大家这么简单的题面都没写(虽然我也没写。。)
D题其实就是一个背包,有一个循环的话就二进制拆分,然后跑背包,每一个物品用多了总是会循环的,所以没啥问题,直接做就好了。
E题模拟,直接说F题吧。
F题其实就是先预处理出来每一个点前面最近的和他颜色一样的点在哪里,然后把每一个颜色最后的点放进优先队列里面,每次去最前面的点,这个点就是要去掉的点,然后检查队尾的点,如果这个点已经被去点,就用这个点前面的颜色和他一样的点代替它,直到这个点没被去掉。
然后一直跑就好了,总体\(O(nlogn)\)
挺签到的。
G题就直接维护\(Sum[i]-2*a[i]\),然后区间查找最大值就好了。
(式子推一下就知道)
H题还没想过。
I题J题很类似,其实就分类讨论一下,对于三个数字\(i,j,k\),\(a[k]\geq a[i] \geq a[j]\)的时候,\(a[i]\geq a[k]\geq a[j]\)的时候,还有\(a[i]\geq a[j]\geq a[k]\)的时候,从\(a[i]\)直接到\(a[j]\)和从\(a[i]\)先到\(a[k]\)再到\(a[j]\)的时候的大小比较,就知道答案了。
(不难,就是费草稿纸
K题简单暴力模拟。
LM没看。很难。。(没几个人过
这次的比赛。。其实如果是真正好好打的话,我估计我自己一个人是做不了几题的。我估摸着。。顶多7题吧,D题我想到了正解,但是我不敢去做,总感觉会很麻烦。。
为什么会这样呢。。
还有C题,G题,我这个G题打表没去真的是给我淦脑溢血了,最后考完才查出来。
之后还是文件输入输出查一次吧。。用不了多久。。
这两个题目都是数据结构题,这个是我没想到的,trie树和线段树,最近练了这么多,结果比赛的时候死在这两题上了。。
不过也是啊。。
吸取教训吸取教训
写题的时候还是不够顺畅,J题既然能够卡住,然后是细节的处理,最简单的比如longlong,和1LL,这种东西还是有的时候会挂。
多练吗?
不知道啊。。
走一步看一步吧,现在只能这样了,多练吧。