码迷,mamicode.com
首页 > 其他好文 > 详细

2017sc膜你赛6 比赛笔记

时间:2017-08-19 18:43:47      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:family   暴力   处理   维护   不能   base   sof   数据结构   test   

这次测试的结果,只有两个字,不好。

    一开始看到第一题。什么?连伪代码都给出了?BST?当然没有这么简单。在学Treap的时候就知道,BST在面对有序数组的时候,由于不平衡,每次插入的时间会达到O(N)。很显然,这题N^2无法承受。怎么办呢?我在草稿纸上画出一个线性的序列,试图在图中找出什么规律。然后,想到一种方法,不建树,用线段树,直接根据BST的性质找出所有的祖先,进行计数。一开始兴奋得不得了。后来才发现,这样做跟BST直接做,本质上是一样的!树仍是不平衡的,祖先仍需遍历。所以一点用都没有……

    于是我想,能不能用Treap来维护呢?我当时只是想,用Treap来代替BST固然可以快速插入,但是根本实现不了题目所求的功能。旋转的时候,整棵树的结构都发生了变化,做不了啊。找规律?我宣告放弃。

(赛后听说用Treap求前驱后继什么鬼的,表示根本没想过这么搞。仔细想想,我的那种方法不行,实际上是因为遍历了所有的祖先,能不能得到最近的祖先呢?这似乎可以用求前驱后继来解决?是这意思吗?还没好好看题解,不清楚)

    第二题笑脸。^=^哈哈哈哈哈真好笑啊(内心已泪奔)。一看,就是一道数学题。要求a^b=c^d,显然硬枚举严重超时,而且算乘方的时候就会炸掉(不过可以用哈希来比较,但是没有什么意义, 超时严重)

    我倒是不想打枚举。还是找到了一点规律的。比如说,1应单独处理,除1以外底数相同的都可以直接计入答案。然后,就只要求除1以外的等式了。等式当然是符合某些性质的。比如说2^6=(2^2)^3=(2^3)^2=(2^6)^1。也就是说,可以通过分解指数因数的方法得到所有的方案。这样时间复杂度应该是O(N^2)左右,好歹会有点分吧。但是一开始的我too young too simple,竟然以为只要将指数不断地除以2来获得方案,答案自然是不对的。调了半天,发现错误之后,已经是为时已晚,身心俱疲,懒得改了。

    Yhf神犇A了这题。赛后听他跟别人解释,听到一点边角料。分解的思路跟我差不多?其实想一想,也能发现N^2做法有重复的操作。现在决定在讲之前再想想。

    说到第三题。简直是毫无头绪。它要求修改一段的值,但是这一段每个值加的都不同。于是我懵逼了。最后只能打了个线段树了事。结果30分。有趣的是,纯暴力居然60分啊哈哈哈哈哈哈哈。容我静静。

    总而言之,这次测试,我或许想到了一点点内容,但是终因为自己的马虎,自己的不够坚持,自己没有深究的勇气而宣告失败。另外,还有对新学算法不熟悉的原因。勇敢、全面、深入地思考,真是太重要了。或许比赛时应有的心态,应有的经验,就是要这样一点一点积累下来的吧。我相信,不惧难,不放弃,努力地想,深入地想,终会有所收获吧。

2017sc膜你赛6 比赛笔记

标签:family   暴力   处理   维护   不能   base   sof   数据结构   test   

原文地址:http://www.cnblogs.com/littlewyy/p/7397144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!