03 2019 档案
摘要:题目描述 给定一张 n(n≤20) 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。 输入 第一行一个整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距
阅读全文
摘要:目录 1.01背包 2.完全背包 3.多层背包 下面我就对我所理解的背包问题做下讲解和总结,(只是吹逼而已),如有错误,请大家指出来。 1.01背包
阅读全文
摘要:1.快速幂 2.快速乘 3.成对运算(最小费用流 n为偶数时,n xor 1 等于 n + 1 n为奇数时,n xor 1 等于 n - 1 (图论中邻接表中边集的储存。在具有无向边(双向边)的图中把一对正反方向的边分别储存在邻接表数组的第n和第n+1位置(其中n为偶数),就可以通过xor 1 的运
阅读全文
摘要:可参考神犇博客: https://oi.men.ci/linear-basis-notes/ https://blog.sengxian.com/algorithms/linear-basis 一、线性基介绍 1、线性基: 若干数的线性基是一组数a1,a2,...an,其中ax的最高位的1在第x位。
阅读全文
摘要:1. 欧几里得算法 求两个正整数的最大公约数,时间复杂度 O(logn)O(logn)。 C++ 代码 2. 扩展欧几里得算法 裴蜀定理:若 a,ba,b 是整数,且 (a,b)=d(a,b)=d,那么对于任意的整数 x,y,ax+byx,y,ax+by 都一定是 dd 的倍数,特别地,一定存在整数
阅读全文
摘要:在很多情况下,问题的范围虽然定义在整数集合ZZ,但是只涉及其中mm个有限数值,并且与数值的绝对大小无关(只把这些数值作为代表,或只与它们的相对顺序有关)。此时,我们就可以把整数集合ZZ中的这mm个整数与1~m1~m建立映射关系。 通俗来讲,就是把无限空间中有限的个体映射到有限的空间中去,以此提高算法
阅读全文
摘要:白话讲解:转载原地址 【序言】 我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所
阅读全文
摘要:题目链接 这里给出三种生物的关系,吃与同类的关系。由于这三种生物的关系依旧可以形成一个环,A吃B,B吃C,C又吃A。所以可以套种类并查集模版。 题解:链接 这里求的x->y的偏移量,即把x当父节点,y当子节点时,y的relation,x吃y,则y就被x吃,所以y的relation为1=d-1
阅读全文
摘要:题目链接 每次给出两个昆虫的关系(异性关系),然后发现这些条件中是否有悖论 就比如说第一组数据 1 2 2 3 1 3 1和2是异性,2和3是异性,然后说1和3是异性就显然不对了。 我们同样可以思考一下这道题如何用带权并查集去做。 首先用r[x]存储的是x与其根节点rx的关系,0代表同性1代表异性(
阅读全文
摘要:题目链接 并查集是用来对集合合并查询的一种数据结构,或者判断是不是一个集合,本题是给你一系列区间和,判断给出的区间中有几个是不合法的。 思考: 1.如何建立区间之间的联系 2.如何发现悖论 首先是如何建立联系,我们可以用一张图表示 假如说区间【fx,x】是之前建立的区间,他们之间和为sum[x],f
阅读全文
摘要:前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧。 正文 Return Top 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的
阅读全文
摘要:异常处理机制 异常处理是对可能出现的异常进行处理,以防止程序遇到异常时被卡死,处于一直等待,或死循环。 异常有两个过程,一个是抛出异常;一个是捕捉异常。 抛出异常 抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常。下面它们之间的异同。 系统自动抛异常 当程序语句出现一些逻
阅读全文
摘要:这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: 代码区如果有错误,就会返回所写异常的处理。 首先要清楚,如果没有try的话,出现异常会导致程序崩溃。而try则可以保证程序的正常运行下去,比如说: 一个计算的话,如果除数为0,则会报错,如果没有
阅读全文
摘要:Java 8 发布日期是2014年3月18日,这次开创性的发布在Java社区引发了不少讨论,并让大家感到激动。特性之一便是随同发布的lambda表达式,它将允许我们将行为传到函数里。在Java 8之前,如果想将行为传入函数,仅有的选择就是匿名类,需要6行代码。而定义行为最重要的那行代码,却混在中间不
阅读全文
摘要:Java中的"equals"和"=="的用法及区别 在初学Java时,可能会经常碰到下面的代码: 为什么第4行和第5行的输出结果不一样?==和equals方法之间的区别是什么?如果在初学Java的时候这个问题不弄清楚,就会导致自己在以后编写代码时出现一些低级的错误。今天就来一起了解一下==和equa
阅读全文
摘要:概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自
阅读全文
摘要:前言: Java 8 已经发布很久了,很多报道表明java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Time API T
阅读全文
摘要:在【Java学习笔记之二十五】初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客。在这篇博客中你可以了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类、匿名内部类使用的形参为何要为final。 一、使用匿名内部类内部类 匿
阅读全文
摘要:java中传参数时,在类型后面跟"..."的使用: public static void main(String[] args){ testStringArgs();//无参数传入 testStringArgs("one");//一个参数传入 testStringArgs("one","two","
阅读全文
摘要:可以将一个类的定义放在另一个类的定义内部,这就是内部类。 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人对内部类也只是略知一二)。 第一次见面 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类。 在这里InnerClass就是内部类,对于初学者来说内部类实在是使用的不
阅读全文
摘要:面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。那么什
阅读全文
摘要:instanceof运算符用法 运算符是双目运算符,左面的操作元是一个对象,右面是一个类.当左面的对象是右面的类创建的对象时,该运算符运算的结果是true,否则是false 说明: (1)一个类的实例包括本身的实例,以及所有直接或间接子类的实例 (2)instanceof左边操作元显式声明的类型与右
阅读全文
摘要:一、定义 Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 接口定义的一般形式为: [访问控制符]interface <接口名> { 类型标识符fin
阅读全文
摘要:一、抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。 那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法
阅读全文
摘要:谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。 一、final关键字的基本用法 在Java中,final关键字可以用来修饰类、方法和变量(包括成员变
阅读全文
摘要:Javadoc注释的用法 Java 文档// 注释一行/* ...... */ 注释若干行/** ...... */ 注释若干行,并写入 javadoc 文档通常这种注释的多行写法如下:/*** .........* .........*/javadoc -d 文档存放目录 -author -ver
阅读全文
摘要:1)有人写了个很好的初始化属性的构造函数,而你仅仅想要在其中添加另一些自己新建属性的初始化,这样在一个构造函数中调用另外一个构造函数,可以避免重复的代码量,减少工作量; 2)在一个构造函数中调用另外一个构造函数的时候应该用的是同一块内存空间,在默认的构造函数中先初始化变量,调用另一个的时候覆写已经初
阅读全文
摘要:1、 什么是继承,继承的特点? 子类继承父类的特征和行为,使得子类具有父类的各种属性和方法。或子类从父类继承方法,使得子类具有父类相同的行为。 特点:在继承关系中,父类更通用、子类更具体。父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为。 在继承关系中。父类
阅读全文
摘要://执行顺序:(优先级从高到低。)静态代码块>mian方法>构造代码块>构造方法。 其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。 1 普通代码块 2 构造代码块 3 静态代码块
阅读全文
摘要:Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录
阅读全文
摘要:用类名定义一个变量的时候,定义的只是一个引用,外面可以通过这个引用来访问这个类里面的属性和方法。 那们类里面是够也应该有一个引用来访问自己的属性和方法纳? 呵呵,JAVA提供了一个很好的东西,就是 this 对象,它可以在类里面来引用这个类的属性和方法。先来个简单的例子: 关于返回类自身的引用,通过
阅读全文
摘要:本文将整理 java.util.Arrays 工具类比较常用的方法: 本文介绍的方法基于JDK 1.7 之上。 1. asList方法 使用该方法可以返回一个固定大小的List,如: 2. binarySearch方法 binarySearch方法支持在整个数组中查找,如: 以及在某个区间范围内查找
阅读全文
摘要:理解Java面向对象的重要知识点: 一、 类,对象 类?首先举一个例子:小李设计了一张汽车设计图,然后交给生产车间来生产汽车,有黑色的、红色的、白色的... 这里,汽车设计图就是我们说的类(class),生产车间就是new构造器(大部分对象都是new出来的),生产出来的汽车就是我们要说的对象。可以说
阅读全文
摘要:分类: 1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序 不稳定:快速排序,希尔排序,堆排序。 // 排序原始数据 private
阅读全文
摘要:foreach语句使用总结增强for(part1:part2){part3}; part2中是一个数组对象,或者是带有泛性的集合. part1定义了一个局部变量,这个局部变量的类型与part2中的对象元素的类型是一致的. part3当然还是循环体. foreach语句是java5的新特征之一,在遍历
阅读全文
摘要:JavaBean是一个标准,遵循标准的Bean是一个带有属性和getters/setters方法的Java类。 JavaBean的定义很简单,但是还有有一些地方需要注意,例如Bean中含有boolean类型的属性。我们知道对于一个属性来说,如果其命名为test,那么其getter和setter方法一
阅读全文
摘要:多维数组声明数据类型[][] 数组名称;数据类型[] 数组名称[];数据类型数组名称[][];以上三种语法在声明二维数组时的功能是等价的。同理,声明三维数组时需要三对中括号,中括号的位置可以在数据类型的后面,也可以在数组名称的后面,其它的依次类推。例如:int[][] map;char c[][];
阅读全文
摘要:第一种:for循环 循环结构for语句的格式: for(初始化表达式;条件表达式;循环后的操作表达式) { 循环体; } eg: 输出结构为30 第二种while语句 循环结构while语句的格式: 初始化语句; while(判断条件语句) { 循环体语句; 控制条件语句; } eg: 输出结果为:
阅读全文
摘要:函数的概述 发现不断进行加法运算,为了提高代码的复用性,就把该功能独立封装成一段独立的小程序,当下次需要执行加法运算的时候,就可以直接调用这个段小程序即可,那么这种封装形形式的具体表现形式则称作函数。 练习:把两个整数相加: 举例:地铁自动售票机,接收纸币或硬币,返回车票,该售票机具有独立功能,可以
阅读全文
摘要:数组 概念 同一种类型数据的集合。其实数组就是一个容器。 数组的好处 可以自动给数组中的元素从0开始编号,方便操作这些元素。 格式1: 元素类型[] 数组名 = new 元素类型[元素个数或数组长度]; 示例:int[] arr = new int[5]; 格式2: 元素类型[] 数组名 = new
阅读全文
摘要:十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf("FFFF",16
阅读全文
摘要:变量和常量 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。 在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。 变量 变量代表程序的状态。程序
阅读全文
摘要:什么是标识符 就是程序员在定义java程序时,自定义的一些名字。标识符可以应用在类名、变量、函数名、包名上。 标识符必须遵循以下规则 Java中的标识符命名规范 1. 包名 多个单词组成时所有字母小写(例:package com.baidu) 2. 类名和接口 多个单词组成时所有单词的首字母大写(例
阅读全文
摘要:Java关键字及其作用 一、 总览: 二、 详细解释 1. 访问控制 1) private 私有的 private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明 private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是
阅读全文
摘要:1028 大数乘法 V2 基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 给出2个大整数A,B,计算A*B的结果。 给出2个大整数A,B,计算A*B的结果。 Input 第1行:大数A 第2行:大数B (A,B的长度 <= 100000,A,B >= 0) Out
阅读全文
摘要:题目链接 题解: 此题可以直接暴力求解,(甚至可以四层循环 具体思想便是a[k]充当两种身份,同时判断两种不同情况,然后计数便可以了 下面给出四层循环的AC代码
阅读全文
摘要:map 在STL的头文件中<map>中定义了模版类map和multimap,用有序二叉树表存储类型为pair<const Key, T>的元素对序列。序列中的元素以const Key部分作为标识,map中所有元素的Key值必须是唯一的,multimap则允许有重复的Key值。 可以将map看作是由K
阅读全文
摘要:KMP算法的核心思想是next数组。 接下来,我来谈谈我对KMP数组的理解。 KMP算法是用来匹配有多少相同字串的一种算法。 1、next数组记录前缀与后缀相等的位置,然后跳到这。 2、数组即记录后缀与前缀相等的个数 如ABCABC 那么next数组就是 KMP算法核心 返回x 在 y 中出现的次数
阅读全文
摘要:选拔赛的题解,~~~ 题目链接:请点击 A题 素数筛 + 线段树(树状数组) 先用素数筛打表,然后线段树更新,遍历求出值,O(1)查询即可 AC代码: /*num数组 是把记录 数是否存在 存在即为1。 总共有N个数,如何判断第i+1个数到最后一个 数之间有多少个数小于第i个数呢?不妨假设 有一个区
阅读全文

浙公网安备 33010602011771号