• 第一次考试_笔记


    心路历程
    0:00-0:20 快速阅题,没有思路,脑子发懵
    0:20-0:30 意识到了自己脑子里已经是一片空白,需要改变。可是懒懒地不想改变。
    0:30-0:32 跟大佬交流。回忆起“考场上先打暴力”的经验,决定开始打暴力。
    0:32-0:34 一边分析一边心情急躁,在办公室站起并快速徘徊,思维敏捷
    0:34-0:38 发现可以把心路历程记录下来以供以后调整。所以写了这个。
    0:38-1:01 分析了一下第三题,有些头绪但是还不够,转而处理前两题的暴力。  
    1:01-1:02 LIS好麻烦啊,真想抄板子。
    1:02-1:03 虽然思路遇到了障碍,但是心情已经冷静下来了。可不能就这么放慢速度啊!
    1:03-1:08 表面上在想正解,其实想不出,而且还走神了
    1:08-1:11 不开心,对于LIS并不好打感到不确定。调整心情,继续动手。
    1:11-1:20 暴力越想越顺,时间过得比想象中的慢一些。
    1:20-1:30 思路打断,突然空白。
    1:30-1:56 开开心心打暴力,然后暴力的核心算法是错误的!
    1:56-2:00 收拾收拾走人

    (中场休息)

    ---------------------------------------------------------------------------------------------------------------

    T3想法:

    难点一:判断冲突

    1.同一方向的炮台不存在冲突

    2.相垂直的方向中,可以写一个小小函数来判断冲突。为了变量传递的方便,最好用结构体来存储炮台,并把map上炮台的位置设为负数。

    难点二:在冲突中作出决策
    1.分治:先转化为“二选一”的问题,当然是选择更多的啦。
    2.转化:第一条是典型的贪心。不如用动态规划来写。
    3.判断:子问题性质满足。无后效性原则满足。
    -------------------动态规划-----------------------
    1.阶段的划分:战场的大小
    2.决策的作出:取max

    3.状态转移方程:if(冲突) f[i][j]=max{f[i-1][j-1]-c}


    难点三:时空复杂度的估算

    1.可以只开int,不过,看起来开long long更加保险。


    T1想法:

    1.先打打纯暴力试试看
    2.LIS不好打?没关系,这个你是写过的。打一打还有很大可能写出来,不试试就真的写不出了!
    3.回忆起还NlogN的做法,不过不记得了。
    4.发现N^2的做法似乎也不会超,数据小。


    5.算出length(lis)==m的方案数,然后除以C(n,m)即为答案。可是会爆吗?
    6.恐怕要爆。


    7.暴力打完了,可是答案比样例答案多1


    8.不作无意义的代码精简

    9.该暴力错误,还是乖乖地按直观做法来暴力吧。


    T2想法:

    要么狂暴dij(超时),要么记忆化搜索(爆空间)

    不过反正我们是来打暴力的。欸,没有时间了!

    ---------------------------------------------------------------------------------------------------------------

    看题解:我看不懂哈哈哈哈哈哈哈

  • 相关阅读:
    maven Spring MVC项目
    NET 解析HTML代码——NSoup
    Masstransit开发基于消息传递的分布式应用
    iOS项目生成通用Windows应用
    测试框架mochajs详解
    9宫格拼图
    spring 整合redis
    Linux下SSH Session复制
    File Templates for web.xml & web-fragment.xml (Servlet 2.3, 2.4, 2.5 + 3.0)
    极度简约 最小 Linux 发行版 Tiny Core Linux 7.1 发布
  • 原文地址:https://www.cnblogs.com/nishida-rin/p/12271137.html
Copyright © 2020-2023  润新知