num

线段树数据结构详解

邮差的信 提交于 2020-01-26 15:43:53
线段树数据结构详解 Coded by Jelly_Goat. All rights reserved. 这一部分是线段树。 线段树,顾名思义,是一种树形数据结构,适用于各种求区间统一算法的动静两平衡的数据结构。 这里什么是统一算法? (自己口胡的统一算法) 比如求最大值or最小值、区间求和,一样的区间都是一样的算法,这也是和动态dp不同的地方。 前置知识1:二叉搜索树 二叉搜索树就是根节点比左儿子大,比右儿子小的一种二叉树。 前置知识2:向量存储 向量存储是用来存完全二叉树儿子和父亲关系的。 如果不满足,我们还可以用链式前向星存 举个例子: 有一颗完全二叉树,节点数是16,然后你会发现: lson标号=root标号*2 , rson标号=root标号*2+1 。 显然可见不是偶然,是二叉树满了导致的。 那么我们可以用下标表示存储的线段树节点。 例如: tree[100] 就是 tree[200] 和 tree[201] 的root。 今天只讨论最普通的线段树(板子:求和) 操作1:建树 怎样种一棵线段树? Jelly_Goat:需要一条线段 没问题,真的需要原序列。 从上往下二分区间长度,递归建树。 代码示范: //维护根节点的和 inline void update(int rt) { tree[rt].sum=tree[rt*2].sum+tree[rt*2+1].sum; }

【算法学习记录-排序题】【PAT A1025】PAT Ranking

China☆狼群 提交于 2020-01-26 15:09:15
Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhejiang University. Each test is supposed to run simultaneously in several places, and the ranklists will be merged immediately after the test. Now it is your job to write a program to correctly merge all the ranklists and generate the final rank. Input Specification: Each input file contains one test case. For each case, the first line contains a positive number N ( ≤ 1 0 0), the number of test locations. Then N ranklists follow, each starts with a line containing a positive integer K ( ≤ 3 0 0),

python之反射

天大地大妈咪最大 提交于 2020-01-26 14:32:26
反射:用字符串数据类型的变量名来访问这个变量的值 反射的方法: getattr hasattr setattr delattr 1、一般的代码编写的方式 class Student: def __init__(self,name): self.name = name def check_course(self): print('check_course') def choose_course(self): print('choose_course') def choosed_course(self): print('查看已选择的课程') stu = Student() num = input('>>>') if num == 'check_course': stu.check_course() elif num == 'choose_course': stu.choose_course() elif num == 'choosed_course': stu.choosed_course() 2、类 静态属性 类方法 静态方法 命名空间.XXX == getattr(命名空间,'XXX') class Student: ROLE = 'STUDENT' @classmethod def check_course(cls): print('查看课程了') @staticmethod

面向对象程序设计寒假第一次作业

大憨熊 提交于 2020-01-26 14:26:27
面向对象程序设计第一次作业 这个作业属于哪个课程 2020年面向对象程序设计 这个作业要求在哪里 面向对象设计寒假作业1 这个作业的目标 安装c++开发环境,完成问答题,实践题以及编程题,并发布博客。 参考文献 《C程序设计》 ----- c语言汉字读取 ----- 命令行使用 ----- 汉字与Ascii码转换器 ----- c语言编译过程 ----- c语言指针概念 问答题: 如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。 一.指针,作为一名大学才接触计算机编程练打字都要看键盘的字母的小白,个人觉得c语言指针部分用得比较不太顺手,相对其它章节概念比较抽象,在一次pta平台作业中基本均涉及指针的情况下便运用数组解决问题,在其中相关要求构建螺旋方阵可以直接运用二维数组知识解决实际问题,当然对于代码小白想要运用指针来解决螺旋方阵我自己觉得上机考试要考这玩意首先想到的就是二维数组,还有连连看问题根据题目所述还是二维数组比较方便,虽然指针更便捷还是c语言的特色,运用还是取决于个人,个人觉得指针用来指向二维数组比较麻烦, 直接用来取一维指针值而在用于处理二维数组中需要在 (f+x)+y(假定f就是指向二维数组的指针,y,x均为常数)此时仅获得该元素的地址需要在加上*获取值,就简洁度而言还是二维数组比较吃香,体现在构建函数时需要输入的形式参数的值是地址

MySQL 性能调优之查询优化

烈酒焚心 提交于 2020-01-26 14:12:13
性能调优相关文档书籍 http://dev.mysql.com/doc/refman/5.7/en/group-by-optimization.html http://dev.mysql.com/doc/refman/5.7/en/order-by-optimization.html 《MySQL性能调优与架构设计》 SQL查询优化总结 缺失索引,查询速度差别是100倍:首先应考虑在 where 及 order by 涉及的列上建立索引 1 show index from mb_ransomrequestform; 2 ALTER TABLE mb_ransomrequestform ADD INDEX IDX_corporationid (corporationid); 3 drop index IDX_corporationid on mb_ransomrequestform; View Code 避免在 where 子句使用不能使用索引的操作符,比如!=、<>、like “%xx%”、or。否则将导致引擎放弃使用索引而进行全表扫描。 1)like “%xx%”改成like “xxx%”可以使用索引 mysql> select bill.billId from EE_PawnBill bill, EE_PawnerInfo pawner where bill.pawnerid

sql执行效率,explain 查询执行效率

痞子三分冷 提交于 2020-01-26 13:25:25
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num=10 or num=20 可以这样查询: select id from t where num=10 union all select id from t where num=20 5.in 和 not in 也要慎用,否则会导致全表扫描,如: select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了: select id from t where num between 1 and 3 6. 很多时候用 exists 代替 in

Leetcode 338. 比特位计数

不羁的心 提交于 2020-01-26 11:42:05
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 输入: 2 输出: [0,1,1] 示例 2: 输入: 5 输出: [0,1,1,2,1,2] 进阶: 给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗? 要求算法的空间复杂度为O(n)。 你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的 __builtin_popcount)来执行此操作。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/counting-bits 官方题解: https://leetcode-cn.com/problems/counting-bits/solution/bi-te-wei-ji-shu-by-leetcode/ 来源: https://www.cnblogs.com/reflecter/p/12233875.html

继承

风流意气都作罢 提交于 2020-01-26 11:14:38
今日内容大纲 初识继承 字面意思:儿子完全可以使用父类的所有内容 专业角度: 如果 B类继承 A类,B 类就称为子类,派生类 A类就称为父类,基类,超类 面向对象的三大特性之一:继承,封装,多态 2.继承的优点 1.减少代码的重复性 2.增加类之间的耦合性 3.代码更加清晰,流畅 3.单继承 1.类名执行父类属性方法 2.对象执行父类属性方法 3.在子类中既执行子类方法又执行父类方法 class Animal: # # def __init__(self, name, sex, age): # # self.name = name # self.age = age # self.sex = sex # # # class Human(Animal): # pass # class Dog(Animal): # pass # # # class Cat(Animal): # pass # class Cat(object): # pass cat1 = Cat() # Human,Dog,Cat 子类,派生类. # Animal 父类,基类,超类. # person = Human('李业', '男', 18) # print(person.name) 4.多继承 1.经典类:不继承 object 类,深度优先原则 2.新式类:继承 object 类.mro(c3)算法 class

面向对象程序设计第一次作业

 ̄綄美尐妖づ 提交于 2020-01-26 10:47:29
这个作业属于哪个课程 2020春福大面向对象程序设计 这个作业要求在哪里 寒假作业1 这个作业的目标 安装开发环境,回顾知识,了解编译过程,实现白话文编程,记录学习过程,发布博客 作业正文 问答题 实践题 编程题 其他参考文献 在各题链接中体现 问答题 你认为C语言有什么缺陷(你觉得哪里用的不顺手) 我在使用C语言的过程中经常出现一些数组下标越界的问题,但是编译的时候不会提示错误,由于越界的内容是未知的,运行的时候就可能产生一些我想象不到的混乱的答案。如果不够熟练C语言中的语法要求,会产生逻辑问题。C语言的运算符数量多,优先级比较复杂,不易记住,所以使用的时候容易出现错误。 关于平行的问题“你觉得C++和C语言比有什么优点”,因为我之前完全不了解c++,所以搜索了一些资料。下面是一些个人收获和想法: C语言是面向过程的语言,C++是基于面向对象的语言。面向过程是指先通过分析得到解决问题所需的步骤,然后把这些步骤用函数一步步实现,使用的时候依次调用。面向对象是把构成问题的成分分解成几个对象,用功能来划分问题,建立对象的目的是描述某个事物在解决问题步骤中的行为。 封装是将抽象得到的数据和行为(或功能)相结合,是将数据与操作数据的源代码进行有机的结合,形成“类”。 首先,类是一种用户定义的引用数据类型,类的本质是数据类型,不是可以操作的数据,所以也没有开辟空间。其次

C#中多线程同步的Monitor理解

余生长醉 提交于 2020-01-26 10:19:07
.NET提供了System.Threading.Monitor类允许同一进城中的线程实现同步,是一种更快速、更轻量级的锁机制。可以使用该类来保护对某些变量的访问,或对某些一次只能在一个线程中执行的代码设置访问权限。 使用实例(片段代码): readonly object theLock=new object(); int num=0; #其他代码... Monitor.Enter(theLock); try{ ++num; }finally{ Monitor.Exit(theLock); } Monitor与lock 对以上代码的解读: Monitor.Enter(theLock)获得theLock对象锁;Monitor.Exit(theLock)释放theLock对象锁; 我们将所有对num变量的访问以对象锁的形式房在临界区,在每次访问前,访问者必须获得theLock对象实例的锁。theLock字段类型是 Object类型,它的实际类型无关紧要,但必须是引用类型即对象的实例,而不是值类型。为了安全起见,建议标记成readonly,以免theLock 被复制而造成混乱。 上述代码不够简洁,使用try/finally,而且一旦漏掉Monitor.Exit将会发生可怕的混乱。就此问题C#设计者引用了lock关键字,lock关键字代替了Monitor.Enter和Monitor.Exit