• 4.3听课笔记(dp篇)


    陈锋老师讲的要点:

    1.搞竞赛不是为了刷题,是为了提升你的思维方法以及能力;

    2.刷题的正确方法是合上书,过一个星期,这个题目还能写出来,并且看看周围同学的代码,有没有更快的,让自己的代码变得更快更好。

    3.dp分为递推和记忆化,但是记忆化较优,有些问题只能使用记忆化,而不能够使用递推,因此可以看看记忆化(如数位dp)

    4.在处理很多数组的问题的时候,一定要学会用引用变量,如:

    int &d=D[i][j];

       这个样子可以方便改变d这个变量。

    5.在dp使用vis[i][j]数组的时候,开bool变量有助于节省空间。(bitset<500>这样的也能当数组用,且它比int小32倍,更小)

    6.在dp中要记录路径时,可以创建一个vector<int> &path,每次push_back一个路径。

    7.工作中不要开全局变量:如果是多线程的程序的话,有可能你这个全局变量同时被两个函数在改变,这样你这个全局变量的状态就是乱的,所以不要开全局变量(然而本蒟蒻看到很多竞赛dalao都在用全局变量QAQ)

    8.memset是按字节赋值的,因此memset不如fill_n来的快。

    9.dp有填表法以及刷表法。前一种是“对每个状态i,找到f(i)依赖的所有状态”,但是这种在有些状况下并不方便。另一种则是“对每个状态i,更新f(i)所影响到的每个状态”。

    10.在查错的时候,可以为了保护程序,增加一条类似下面的代码:

    assert(0<=h&&h<3);

       这个样子,如果你的h超出这个范围,那么你的程序就会崩掉。

  • 相关阅读:
    【转】 Linux Core Dump 介绍
    【转】 设定linux 系统可用资源
    Python for 循环 失效
    transition 平移属性实现 横向整屏 滚动
    vue 插槽的使用
    vue pc商城仿网易严选商品的分类效果
    干货-vue 中使用 rxjs 进行非父子组件中传值
    vue 2.0 脚手架项目中使用 cross-env 分环境打包
    什么是闭包,有哪些优缺点呢?
    滚动视差
  • 原文地址:https://www.cnblogs.com/hhlys/p/12625858.html
Copyright © 2020-2023  润新知