2017.10.8国庆小长假训练总结

来源:互联网 发布:欲知大道 编辑:程序博客网 时间:2024/06/02 15:36

国庆放了8天,然而,其实也就是6-8号在学校机房里的时候认真刷了,在家里的时间还是太散漫,在家平均两天一道题~几乎刷不动,家里有小孩,也几乎没办法安静下来思考什么或者安静的分析题解。。回来之后好多了~就是机房有点冷、

6号算是试水的一天,就A了国庆练习题上的一道树状数组的题,做过的、A的还算轻松,然后就再也没有成就了!!死在线段树1017上!!!一开始是看了一下题解思路,自己做,TLE。。自己做的时候就感觉有点乱,然后看题解,改了好久,还是TLE,就是函数太多了,在查找的时候多了一层可以优化掉的中间函数,感觉懂了之后又交,结果WA!找错呀找错,真的找出了几个笔下误,然而还是WA,最后没辙,跟着题解一步一步的对,结果发现方向反了!!!Excuse me???因为是绕成一个圆,在读题的时候就想当然地,认为从左往右方向。。就是绕成圆后的左右方向。。。在题中根本没有找到绕圆的方向,跟队友好个哭诉这个题坑啊!!结果。。八号,队友做这个题时,说有表明方向。。。 clockwiseorder是顺时针方向排序。。为什么我翻译过来是顺序。。。结合前面的,根本没有想会是顺序逆序的顺序。。。英语差真的是硬伤!!!结果,我的一天时间浪费掉是因为这?????不过这个题的题意真的有毒,where F(p) is the number of positive integers that perfectly divide p,分割成整数???不看题解,还真的不明白原来是因子—。—、

7号把1017 A了后就感觉对线段树绝望了,就去做树状数组了,哇,简直了,发现好多水。。。1009求时间内开花数的题,明明时间的范围是10^9,为什么开10^5的数组也能A?!?!一开始是因为10^9没什么想法,结果队友说就是一个巨简单线段树模型题,我。。嗯??!!一看,真的是,队友10^5 的数组A了。。。我也直接这样试了一下,真的A了?!!后来搜了题解看了一下,比较简单的,加一步离散化处理,不过处理方式有点新颖,是将所有的数全部存到一个新数组a内,然后排序,消去重复出现的数后,数对应的在a数组内的坐标就是离散后的值了。。然后再调值,到a数组内二分查询,返回离散后的值,再存到树状数组内,查找时亦然,,并不是很难,就是不离散也能过有点坑。。。


然后就是树状数组的1014,通过率很高啊,这个题的数据量真的小,100*100的矩形。。直接模拟就能过。。不过真的用树状数组还真的没想到,搜一下题解,一看,我感觉还不如模拟!!题解并没有对两层for循环进行优化,生生的在两层满满的for循环内存树状数组,然后再查。。感觉直接赋值,暴力求和的时间差不了多少。。


1008是一个比较新的题型,树状数组下存的是一个矩阵,因为矩阵很小,所以可以建三维数组,挺有意思的,不过还不是很理解,背过了代码,强A的。。。有那么一点懂了,但是还不是很明了
  树状数组后跟的是一个矩阵,根据矩阵与树节点的关系来判断是否添加,,有一点差分的感觉!这个题已经存下来了,暂时看不懂,得多看几次刷刷脸才行了。

还有1018 一开始觉得是个二维的模型,结果发现数组太大。。二维的数组开不了。。看了一下题解,果然是另一种思路,处理方式很熟悉,以前肯定用过类似的方法,以x坐标为分界线,将所有的点对y坐标建树,先将所有点放到右树上,分别对所有点和划线的交点排序(第几次划线得存到点结构体内,输出要按照顺序),对所有点顺序循环一遍,内循环是确定划线位置,竖线左边的放到左树上,将其从右树上消去,根据y就可以求当前划线情况下1,2,3,4象限内的硬币数了。。说起来有点复杂,但是毕竟是以前用过的方法,理解起来很容易、、

还做了一个二维线段树的。1005,二维的模板题,比较简单的,温习了一下二维的知识自己做的~中间也不少笔下误,改了好久~

7号算是爆发的一天了,头脑比较清醒,效率很高!!


8号做了线段树,上午A了一个水题1014,跟开花的那个坑题1009一样,不过这个题必须离散化了~A的比较容易!

下午做了1019,给定单调递增序列,求给定区间内数字重复的最大次数,线段树最值问题,树根结点存对应区间内的数字重复的最大次数,只需要考虑当左子树的最右数与右子树最左树相同时,父树合并需要比较一下,至于节点的最左树与最右树的值与其相邻的个数,可以建树的结构体保存,建树的时候更新信息即可!并不是很难的一个题、

虽然时间延长了一周,但是任务还是很艰巨啊!!,平均每天两道才能完成任务!!!!Finghting!!!