早上去了讨论了一下昨天的B题,其实莫队也挺好理解的,那道题直接套板子就能过,然后昨天那个二十几行的代码也理解了,思路特别巧妙,和我之前的思路差不多,只不过我少考虑了一个点。然后上午看了一下前缀和,前缀和在应用中有不少技巧,不单单是对数据求和,还可以和平均数求差后求和。
然后就是几种排序,选择排序,插入排序,冒泡排序,这些复杂度都是O(n^2),堆排序,归并排序,快速排序的复杂度都是O(nlog n),计数排序,基数排序,桶排序的复杂度不止与n有关,还与数值得大小有关。
下午看了离散化,大概明白了,做了一道离散化加排序的题。然后就是中位数的各种巧妙应用,接触了对顶堆,对顶堆利用的就是两个二叉树,每次都对堆顶元素进行操作。比单纯的暴力复杂度降低了好多,对顶堆不光光可以求中位数,还可以进行多种变化求区间最大值最小值等等操作。
晚上的比赛比前两天难,我以为A题还会是最难的就没做,直接看B题,做了几遍不知道哪里错了,看到A有人过了才去做,就是解方程组然后转double类型,过了A继续看B,因为B看起来确实不难,做了好久放弃去做E,E一开始我以为是单调队列,仔细一想暴力直接做就行。比赛玩发现D其实不难啊,没有一个人做,如果开E还是有机会做出来的,应该把每道题都看看的,明天把这几道题都补完。我不应该只满足于两三道题,这样的话根本无法提高,还是要去攻克难题。