qbxt Day2 on 19-7-25

——TGZCBY

上午

1. 矩阵乘法在图论上的应用

有的时候图论的转移方程可以用dp的方式转移

特别是两个数的乘积求和的时候

比如邻接矩阵中f[i][j]表示走了i条边之后到达j点的方案数

直接用最后的矩阵*邻接矩阵^p就基本OK

通常情况下能够用矩阵乘法解决的优化问题

都有这种情况出现

然而要注意:数据范围

因为矩阵乘法的复杂度几乎无法保证\(\leq O(n^2)\)

我们这时候还是需要尽量去合并范围更小的乘法项

去优化这个更加难受的优化

牢记矩阵乘法有结合律,没有交换律

2. 搜索的剪枝技巧

zhx:说实话,我无法教给你们万用的技巧

因为每一个题都有一个特定的剪枝技巧

真的!!每一个题都不一样

但是一些通用的剪枝技巧还是有迹可循


比如我们先想:什么时候用bfs

bfs通常使用在计数的时候

这个时候我们不会让dfs去跑一遍作死

然后还有前后数据没有太大关联的时候

这个时候状态转移好转移啊


如果bfs炸了,我们还是回到一个dfs上

dfs的好处就是状态转移直观啊

但是dfs无法满足大量的转移

怎么办呢?

这里提供几个解决办法:

  1. 改变枚举顺序

    通常出题人是不会让你过正常思维整出来的题目的

    所以我们要换一种顺序去得到正确答案并且快速枚举

  2. 可行性剪枝

    说白了就是往最好的方面去走,然后排除绝对不可能的选项

    先走最有可能的选项

    这样我们就有了一个更好的搜索树让可行性这个剪枝更加优秀

  3. 判重

    有一些搜索的搜索树是相同的

    可能 or 不可能都剪掉

    然后有一部分填空的题目上下、左右有对称性

    如果重复也可以直接剪掉

  4. 卡时

    有的时候你已经算出正确的答案了

    特别是你的枚举顺序特别好的时候

    这个时候如果快要超时了(当然你不知道答案是否正确)

    你就赶紧掐断这个搜索树

    直接输出目前为止最好的答案

    这也不失为一种暴力的好办法

    毕竟有的时候确实是好用(Orz)

搜索就说这么多

下午

基础数据结构

  1. 单调栈

单调栈当然是比较高级的栈

其中的元素满足一定的单调性

当我们弹出其中元素的时候

我们还要进行状态的转移

  1. BST

二叉搜索树之所以还讲

是因为要为后面线段树做好铺垫

而且搜索树的性质、思想十分重要

所以讲了BST

  1. 树状数组

树状数组之所以还有用处

是因为代码短,常数小

而且用它的地方还有求逆序对

所以好处多多

但是局限性很大

只要元素不满足“可以相减来转移”的性质

树状数组就废了

  1. 线段树

线段树是一个好东西

在维护区间操作的时候十分的给力

注意tag的用法

有的时候还是要进行一波玄学操作的

  1. 左偏树

老师竟然不会普通堆!于是一波福利就来了。

这个左偏树我做了详细的介绍,可以 点这里 来查看。

今天的例题我先不放了......等我先都做完了再说qwq

qbxt Day2 on 19-7-25的更多相关文章

  1. QBXT Day2主要是数据结构(没写完先占坑)

    简单数据结构 本节课可能用到的一些复杂度: O(log n). 1/1+1/1/.....1/N+O(n log n) 在我们初学OI的时候,总会遇到这么一道题. 给出N次操作,每次加入一个数,或者询 ...

  2. 19.3.25 sql查询语句

    1.单表查询:select * from 表名 where id = 111 2.查询表内数据并以id排序:select * from 表名 order by id (降序:desc/升序:asc) ...

  3. QBXT Day2

    遭遇[问题描述]你是能看到第一题的 friends呢.—— hjaN座楼房,立于城中 .第i座楼,高度 hi.你需要一开始选择座楼,开始跳楼. 在第 i座楼准备跳需要 ci的花费. 每次可以跳到任何一 ...

  4. Java每日一面(Part1:计算机网络)[19/11/25]

    作者:晨钟暮鼓c个人微信公众号:程序猿的月光宝盒 1. HTTP相关[2] 1.1Get请求和Post请求的区别 从三个层面来回答: 1.1.1 从HTTP报文层面: ​ Get请求将请求信息放在UR ...

  5. 蓝桥杯刷题,第四界省赛B组

    题头,本内容的题目和部分内容均来自博客:https://blog.csdn.net/ryo_218/article/details/79704030 ,在此感谢. 1. 题目标题:高斯日记大数学家高斯 ...

  6. 【转载】JAVA基础:注解

    原文:https://www.cnblogs.com/xdp-gacl/p/3622275.html#undefined 一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的 ...

  7. java基础—注解annotation

    一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts ...

  8. 【Java】时间戳与Date相互转换

    时间戳转Date public static void main(String[] args) { // 10位的秒级别的时间戳 long time1 = 1527767665; String res ...

  9. @interface 注解详解

    转:http://www.cnblogs.com/xdp-gacl/p/3622275.html 只为成功找方法,不为失败找借口! Java基础加强总结(一)——注解(Annotation) 一.认识 ...

随机推荐

  1. 机器学习实战笔记-7-AdaBoost元算法

    AdaBoost(Adaptive boosting)元算法 元算法:将不同分类器组合起来的结果,也叫集成方法. AdaBoost优点:泛化错误率,易编码,可应用在大部分分类器,无参数调整:缺点:对离 ...

  2. Logistic Algorithm分类算法的Octave仿真

    本次Octave仿真解决的问题是,根据两门入学考试的成绩来决定学生是否被录取,我们学习的训练集是包含100名学生成绩及其录取结果的数据,需要设计算法来学习该数据集,并且对新给出的学生成绩进行录取结果预 ...

  3. 移动端安全 - 安卓Android - 工具相关

    渗透工具 drozer .安装文件解压后文件介绍 setup.exe ---安装 agent.apk ---用于调试 - 安装在安卓手机上 使用命令 . cd 到 drozer 安装目录 . adb ...

  4. SQL Server 分页语句查询

    --查询第10页的数据(15条) SELECT TEMP1.* FROM( SELECT TOP 15 ROW_NUMBER() OVER(ORDER BY ID ASC) AS ROWID,* FR ...

  5. 如何创建linux虚拟机

    一.安装配置linux虚拟机 第1步:运行"Vmware WorkStation",看到主页面. 第2步:创建新的虚拟机,新建虚拟机向导——典型(推荐). 第3步:选择稍后安装操作 ...

  6. python安装numpy

    命令介绍: D:\computerSoft\python3.6.4\Scripts>python36 pip3.6.exe install numpy # 通过pip下载对应版本的numpy,然 ...

  7. [fw]linux 下如何查看和踢除正在登陆的其它用户

    linux 下如何查看和踢除正在登陆的其它用户 Posted on 2011/09/01   如何在linux下查看当前登录的用户,并且踢掉你认为应该踢掉的用户?请使用who这个命令来查看当前正在登录 ...

  8. P4390 [BOI2007]Mokia 摩基亚

    传送门 对于一个询问 $(xa,ya),(xb,yb)$,拆成 $4$ 个询问并容斥一下 具体就是把询问变成求小于等于 $xb,yb$ 的点数,减去小于等于 $xa-1,yb$ 和小于等于 $xb,y ...

  9. angularjs 信息链接 转摘自:http://www.zhihu.com/question/27427447

    这个问题嘛,真不好回答,问的太笼统了,其实你只要熟悉掌握了Angular.js,自然而然的就会用Angular.js结合自身的业务去构建SPA程序了,Angular.js是一个比较全面的框架,按照他的 ...

  10. JVM(4)之 使用MAT排查堆溢出

    开发十年,就只剩下这套架构体系了! >>>   接下来讲解如何设置以及当发生堆溢出的时候怎么排查问题.先看一小段代码:     代码中使用了一个无限循环来为list添加对象,如果采用 ...