暑假总结第17天

今天上午把昨天做的题补完了,先处理的还是昨天没有A出来的二分,最后证明我的思路没有问题,就是其中有的细节没有处理好,就是在输入N=0的时候出现了问题,其实还是自己在存距离的时候出现了问题,对比了一下别人的代码发现很简单的步骤写的十分的麻烦。整体思路没有问题。然后我看的是单调队列的题,我的相比较题解还是有点繁琐,就是我把M个数都存了进去,相邻的数有重复,但是题解的就存入了N个数,相邻的没有重复,我反而比题解多了一个循环,但是就是复杂。还有第一题,这个题我在前天晚上回去的路上讨论了,其实就是一个贪心,排好顺序,然后把一个一个的找出来就A了。最后看的是一个据说很难的题,就是深搜的背包,当时不是我A的,看了一遍题,第一感觉就是01背包,但是数组开不了那么大,我就不会了,最后看的题解,就是深搜。

下午看的课件,感觉真正有掌握的新知识就是逆序值的算法,回归排序可以返回逆序值,还可以用sum[n]-sum[i]。还看了离散化,就是映射,排序之后映射他第几小,我今天看的最难得一个题就是要在一个序列里找到一个子数列,子数列的相邻的元素的差不过D,问有几种方法。我看了这个题,根本就没有思路。这个题好几个方法结合,DP,离散化,还有树状数组。首先用离散化处理数据,之后用DP求出来可以以某个数据结尾的方法有几个,求这个时候就需要递归了,需要把前面出现的能跟他靠着的数,做结尾的方法传递过来然后加上以他做开头的方法(temp =sum(1,R[i])-sum(1,L[i]-1)+sum(2, R[i])-sum(2,L[i]-1) ;) 这个式子,然后存到树状数组里,看了好久,才弄懂。 这里的L[i]和R[i]代表的意思是能跟这个数相连的数的最小值和最大值。

感觉今天的收获不错,就是看的有点慢。

你可能感兴趣的:(暑假训练总结)