zoukankan      html  css  js  c++  java
  • 自我剖析

    现在列出我学习的算法和掌握熟练度:

    (1为很熟,2为熟练,3为会但没有做什么题,4为不会)

    暴力 1

    二分 1

    贪心 1

    三分 2

    0/1分数规划 1

    最短路 1

    线段树 1

    平衡树 2

    树分治 2

    平面数点 3

    分治 1

    mobius反演 2

    二进制分组 3

    基础数据结构 (队列,栈,链表)2

    并查集 1

    均摊分析 2

    树剖 1

    lct 2

    ett 3

    搜索剪枝 2

    生成函数 2

    常见多项式科技 2

    不常见多项式科技 4

    字符串匹配数据结构 2

    后缀数据结构 2

    随机化算法 3

    pollard-rho 3

    基础平面计算几何 3

    进阶平面计算几何 4

    立体计算几何 3

    分块 2

    基础dp 1

    斜率优化 2

    决策单调性 3

    可持久化思想 2

    最小圆覆盖 4

    支配树 4

    莫队算法/思想 2

    嵌套数据结构 3

    基础数论 1

    进阶数论 2

    差分约束 2

    线性规划 4

    网络流 2

    筛法 3

    特殊的公式 3

    这说明我的常考算法较为熟练,但是不常见算法不熟练甚至不会。

    本人在上一年做出了很多努力。虽然在联赛中获得了400+分,入选了THUWC。

    但是在THUWC内还是暴露出了我很多问题。

    首先day1花了3h+才pp了A,原因是对linux系统不熟练,没有使用gdb系统调试的经验。

    并且在考试时想复杂了,认为A要使用倍增才能做。于是写了个倍增+单调栈上二分。细节十分多。

    这让我没有时间认真思考C,且没有写C的暴力。

    并且对于评测系统的不熟悉,导致在最后一次提交B题的时候,提交了完全错误的版本且没有交正确的,白白丢了30+分。

    在day2,本人没有信心,在A上只有写确定性算法的思维定式,没有写只记录最大值最小值的错误做法+暴力。

    并且没有注意到值域<=15的条件,以为这个条件只是为了符合int128的要求而设定的,于是在考场上自闭5h成功只有19分。

    实际上。day2的A是一个很简单的状态压缩dp。本人在后来随便想一下就想出来了。

    虽然在分类讨论答案的时候,会发现只记录最大值/最小值不可行。

    但是发现只有正/负 255个数可以替代当前数。所以直接状态压进255个数即可。

    dqa2019写了一个平衡规划做法成功签到。然而我因为思维定式没有想到A。

    这说明我的思维定式十分严重。

    这会让我做不出很多简单题。让我在考试里得不到等于水平的分数。

    比如HNOI2018 道路 这道题是一道非常简单的dp题,但是在考试上AC的人不多,很多都是因为思维定式没有做出来。

    这说明思维定式会让人做不出题。

    所以我要解除自己的思维定式。

    并且我最近做题时,在看懂题解后,为了节省时间,代码很多都是对着题解写的。

    这导致本人的代码能力较低。在打模拟赛时,很多次都是想到正解但是没写出来。

    如果我代码能力强一点的话,我就能在THUWC上快速写完A的倍增+单调栈二分,并且在后面的题目上获得更加高的分数。在day2+也能拿到至少96分,如果我没有思维定式的话,我day2就能成功签到。

    并且如果我有"打完暴力在想正解"的意识,且代码能力更强的话,我就能在day1,day2的B,C上获得更高分。从而在THUWC上拿到更多的分数。

    这样子就能拿到二等奖,甚至能拿到一等奖。

    并且day2B其实思维难度并没有day2A那么高。只要我会支配树。我就能拿到除暴力外的更多分数,更有希望拿奖。

    除此之外,本人不擅长写没有正确性的证明的算法。本人的思维定式让我只写确定性证明的标准算法。

    这让我没有在THUWC day2A上获得较高的分数。

    本人也不擅长猜结论,发现题目的性质。做题只通过直接思路想。从来不敢猜性质,猜了性质也不敢证明。这让我在结论题(如THUWCday1 C)上的得分不高。

    实际上,这道题想到bfs序的结论以后就是3维数点+点分治+线段树上二分。这个应该是比较容易想到的。

    但是本人由于没有猜结论获得了0分。(获得0分也有1个原因是没写暴力)

    实际上本人应该猜一下结论,这样子至少能获得nq的部分分,还有后面的高复杂度预处理部分分。

    在链的部分分也能看到这个结论,但是我没有想链。

    且自己积累常见套路的能力没有同学dqa2019高。这体现在我做的题目上。

    本人做的题目大多都构造性很强,在套路的积累上不强。

    反而dqa2019做的题目大多数都反映了一种套路。

    比如dqa2019做的通道,是一个虚树+直径集合合并。这道题在第一颗树上边分治,在第二颗树上建出点集的虚树。

    快速求出答案要一种有构造意味的做法。发现答案的式子有2个部分分别只和端点x,y有关,可以在第二颗树上的每一个节点上下挂一个端点进行直径合并。

    这个思路十分巧妙,NOI2018 情报中心 s2部分也考到了这个性质(虽然是端点加权的)

    这道题dqa2019在2019年上半年就做了,但是我是在去年年底才做,还是水过去的。

    同样,紫荆花之恋的做法也是有构造意味的做法。它参考了替罪羊树在重构时的表现。

    建出点分治树。在加点的时候直接在点分树上连加的边,同时更新点的大小和每个节点的平衡树

    在点分树的一个节点的大小太大(大于父亲的大小乘一个常数)就暴力重构,重新再这个点的子树下进行点分治。

    这道题dqa2019也是在2019年上半年就做了,而我在2020年才做的。

    同样的例子还有NOI2018你的名字,[ZJOI2007]捉迷藏,诗人小G,CTSC2018 暴力写挂等。

    并且dqa2019的代码都是自己写的,复制别人的代码进行对拍。而我很多代码都是看题解写的。这使我代码能力比较差。

    实际上,自己写+调代码很多时候花费的时间不比学着题解写代码要少。

    虽然我在写代码的时候理解了题解代码和思路的全部内容,也付出了很多努力

    但是我的路还是走的十分不踏实。

    除了特别有意思的的,本人做的题目有较多都不记得了。

    这也能解释dqa2019在纪中打模拟赛拿了5次第一,吊打我的原因了。

    所以我要做出一下改进措施:

    1.所以以后我在做题时要先思考20min+,然后再看题解。除非这道题很神仙。

    2.本人在打模拟赛时总是心不在焉。没有掌握考试经验。在打模拟赛时集中精力,获得尽量多的分数。

    如果我在打模拟赛时不认真打,我就没有打暴力的意识。这也让我在联赛时暴力没有写满,且没有深入思考任何一道题。

    3.我以后代码要自己写,不要对着题解写。这样才能提升自己的代码能力。

    4.努力学习算法。说不定这个算法在哪一次考试就考到了

    5.积累套路,要做有代表性的题目。

    6.计算几何非常差,要加强。数据结构也比较差。

    7.在做题时要努力发现性质,大胆猜想,写暴力/证明边写边证明。

    8.在有思路后一定要直接实现算法,不要拖延。这也导致我在联赛day2B上失分24/36分

    9.自己不擅长做数据结构题。这导致我在几乎全是数据结构的THUWC上没有拿到奖,以后要多做Ynoi。

    10.要对基础算法熟练,且要深刻理解。如果我对基础算法熟练,我就能写出联赛day2B的24/36分高分算法,且能做出更多的构造题。

    11.做题要深入思考,要从多方面想题。联赛day2A本人没有深入思考,没有发现可以合并2维导致失分16分。

    12.本人要多做一些构造算法/非完美算法的题。这样才能让我在一些非典型题中获得更高的分数。

    13.对linux系统不熟练。与我对比,dqa2019使用的就是linux系统。我以后要尝试更多的使用linux系统、

  • 相关阅读:
    为IIS启用ASP.NET 2.0
    使用css技术代替传统的frame技术
    So you want to replay an IIS web server log?
    令人疑惑的defaultValueAttribute
    关于 Web 测试中的 JavaScript 和 ActiveX 控件 【转载】
    如何控制浏览器打印效果
    Google Chart Api
    VSTS负载测试——如何:使用 SQL 创建结果存储区
    在windows service的代码中得到当前的目录
    CAN I WRITE AN ISAPI FILTER USING MANAGED CODE?
  • 原文地址:https://www.cnblogs.com/cszmc2004/p/12343088.html
Copyright © 2011-2022 走看看