MUL

王之泰201771010131《面向对象程序设计(java)》第十周学习总结

天大地大妈咪最大 提交于 2020-05-04 23:06:30
第一部分:理论知识学习部分 第八章 泛型程序设计 1、泛型程序设计概念 1)JDK 5.0 中增加的泛型类型,是Java 语言中类型安全的一次重要改进。 2)泛型:也称参数化类型(parameterized type),就是在定义类、接口和方法时,通过类型参数指示将要处理的对象类型。(如ArrayList类)  3)泛型程序设计(Generic programming):编写代码可以被很多不同类型的对象所重用。 2、泛型类的声明及实例化的方法 1)一个泛型类(generic class)就是具有一个或多个类型变量的类,即创建用类型作为参数的类。 2)如一个泛型类定义格式如下:class Generics<K,V>其中的K和V是类中的可变类型参数。 3)Pair类引入了一个类型变量T,用尖括号(<>)括起来,并放在类名的后面。 4)泛型类可以有多个类型变量。例如:public class Pair<T, U> { … } 5)类定义中的类型变量用于指定方法的返回类型以及域、局部变量的类型。 6)泛型类的约束与局限性: a)不能用基本类型实例化类型参数 b)运行时类型查询只适用于原始类型 c)不能抛出也不能捕获泛型类实例 d)参数化类型的数组不合法 e)不能实例化类型变量 f )泛型类的静态上下文中类型变量无效 g)注意擦除后的冲突 3、泛型方法的定义 1)泛型方法:除了泛型类外

相机IMU融合四部曲(三):MSF详细解读与使用

為{幸葍}努か 提交于 2020-05-04 10:39:10
相机IMU融合四部曲(三):MSF详细解读与使用 极品巧克力 前言 通过前两篇文章,《D-LG-EKF详细解读》和《误差状态四元数详细解读》,已经把相机和IMU融合的理论全部都推导一遍了。而且《误差状态四元数》还对实际操作中的可能遇到的一些情况,进行指导。 这些理论都已经比较完整了,那么,该如何在实际当中操作呢?该如何用到实际产品中呢?误差状态四元数,是有开源的程序的,但是它是集成在rtslam( https://www.openrobots.org/wiki/rtslam/ )里面的,不方便提取出来使用。 但还有另外一个开源的程序,ETH的MSF(https://github.com/ethz-asl/ethzasl_msf),它是独立的一个开源程序,可以比较方便地用在自己的工程里面,并且它的理论与误差状态四元数很接近,稍微有点不同,所以MSF开源程序就成了一个不错的选择。 所以,我把MSF的程序全部都通读一遍之后,结合程序来推导MSF的理论,总结成本文,包括MSF的实验,与各位分享。 1.基本模型 基本模型如下图所示。 MSF的可扩展性很好,程序里可以接入新的传感器,比如GPS,激光雷达,码盘等。 主要的理论还是误差状态四元数里面的理论。 相比于《卡尔曼四元数带外参融合方法》,它的方法更好。 首先,它的核心状态里面没有重力在世界坐标系下的表示。因为它用的就是《误差状态四元数

[Loj] 数列分块入门 1

二次信任 提交于 2020-05-04 05:07:57
数列分块入门 1 https://loj.ac/problem/6277 区间加 + 单点查询 #include <iostream> #include <cstdio> #include <cmath> using namespace std; const int N = 5e4 + 10 ; #define gc getchar() inline int read() { int x = 0 ; char c = gc; while (c < ' 0 ' || c > ' 9 ' ) c = gc; while (c >= ' 0 ' && c <= ' 9 ' ) x = x * 10 + c - ' 0 ' , c = gc; return x; } int A[N], Add[N], bel[N]; int n, block, cnt; void Sec_G( int x, int y, int w) { if (bel[x] == bel[y]) for ( int i = x; i <= y; i ++) A[i] += w; else { for ( int i = x; i <= bel[x] * block; i ++) A[i] += w; for ( int i = (bel[y] - 1 ) * block + 1 ; i <= y; i ++) A[i]

UOJ#422. 【集训队作业2018】小Z的礼物

瘦欲@ 提交于 2020-05-03 21:39:49
#422. 【集训队作业2018】小Z的礼物 min-max容斥 转化为每个集合最早被染色的期望时间 如果有x个选择可以染色,那么期望时间就是((n-1)*m+(m-1)*n))/x 但是x会变,中途统计答案会很麻烦 所以把x记录到状态里! 轮廓线DP f[i][j][s][x]到了(i,j),轮廓线选择情况是s,x个选择可以染色的所有方案的(-1)^(|T|+1)的和 枚举(i,j)选不选,x的增长直接用s和(i,j)位置计算即可。 相当于每个T在x的位置上被考虑了恰好一次。 #include<bits/stdc++.h> #define reg register int #define il inline #define fi first #define se second #define mk(a,b) make_pair(a,b) #define numb (ch^'0') #define pb push_back #define solid const auto & #define enter cout<<endl #define pii pair<int,int> using namespace std; typedef long long ll; template < class T>il void rd(T & x){ char ch;x= 0 ; bool fl=

windows动态链接库使用方法

浪子不回头ぞ 提交于 2020-05-02 18:21:56
Windows动态链接库DLL 1.什么是DLL DLL,即动态链接库,是包含若干个函数的库文件,可供其他程序运行时调用。 2.DLL的优缺点 优点:代码重用,可供多个程序同时调用 缺点:易发生版本冲突 当新版本的动态链接库不兼容旧版本时,其他使用该DLL的程序可能无法正常工作。 针对这一问题,我们需要在程序中加上一个manifest文件,指明该程序所使用的DLL版本号。 此时,程序将根据manifest加载指定版本的DLL,否则按默认版本加载。 3.关于LIB和DLL LIB,是静态链接库,分为静态lib和动态lib。 静态lib:包含函数代码声明和实现,编译后所有代码都嵌入到宿主程序中。不需要再另行调用DLL。 动态lib:相当于一个.h头文件,它是对实现部分(.DLL)的导出部分的声明。编译后宿主程序也只包括声明部分。运行时需调用相应的DLL文件。 1 #ifndef _MYMATH_H 2 #define _MYMATH_H 3 #include <stdio.h> 4 5 6 #ifdef MYMATHDLL_EXPORT 7 #define MYMATHDLL_API _declspec(dllexport) 8 #else 9 #define MYMATHDLL_API _declspec(dllimport) 10 #endif // end of

欧拉函数(汇总&例题)

只愿长相守 提交于 2020-05-01 05:16:13
定义 欧拉函数 $\varphi(n)$表示小于等于$n$的正整数中与$n$互质的数的数目。 性质 1、积性函数( 证明 )。 2、$\varphi(1)=1$(显然) 3、对于质数$n$,$\varphi(n)=n-1$(显然) 4、对于质数的幂$n=p^k$(其中$p$为质数,$k$为正整数),$\varphi(n)=p^{k-1}\cdot(p-1)$ 证明: 归纳法,在$k=1$时显然成立,假设当$k$为$k-1$时成立,那么对于将$1,2,...p^k$中每一个数表示为$x\cdot p^{k-1}+d$,其中$0\leq x<p$,$1\leq d\leq p^{k-1}$,若某一个数对$\varphi(n=p^k)$有贡献,则其$d$的部分一定不含质因子$p$,因而一定对$\varphi(p^{k-1})$有贡献,所以,恰好每一个对$\varphi(p^{k-1})$ 有贡献的数都会对$\varphi(p^k)$有$p$次贡献,所以有$\varphi(p^k)= \varphi(p^{k-1}) \times p=p^{k-2}\times (p-1)\times p=p^{k-1}\times (p-1)$,得证。 计算 不妨设 $n=\prod p_i^{t_i}$ ,其中 $p_i$ 是质数, $t_i$ 为正整数。 则有 $\varphi(n)=n \prod

数据分析核心包——pandas

自古美人都是妖i 提交于 2020-05-01 03:31:55
一、pandas简介   pandas是一个强大的Python数据分析的工具包,是基于NumPy构建的。 1、pandas的主要功能   (1)具备对其功能的数据结构DataFrame、Series   (2)集成时间序列功能   (3)提供丰富的数学运算和操作   (4)灵活处理缺失数据 2、安装和引用 # 安装方法: # pip install pandas # 引用方法: import pandas as pd 二、Series——一维数据对象   Series是一种类似于 一维数组的对象 ,由一组数据和一组与之相关的数据标签(索引)组成。 # Series创建方式 >>> import pandas as pd >>> pd.Series([2,3,4,5]) 0 2 1 3 2 4 3 5 dtype: int64 >>> pd.Series([2,3,4,5], index=['a','b','c','d']) a 2 b 3 c 4 d 5 dtype: int64   获取值数组和索引数组:values属性和index属性。   Series比较像列表(数组)和字典的结合体。 1、Series——使用特性 (1)Series支持array的特性(下标) # 从ndarray创建Series:Series(arr) >>> import numpy as np >>>

从零开始学动态规划(转)

流过昼夜 提交于 2020-04-30 12:55:46
动态规划的定义: 动态规划是运筹学的一个分支,是求解决策过程的最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。在各种算法中,我认为动态规划是较难掌握好的,主要难在模型的建立。 解题的一般步骤是: 1.找出最优解的性质,刻画其结构特征和最优子结构特征; 2.递归地定义最优值,刻画原问题解与子问题解间的关系; 3.以自底向上的方式计算出各个子问题、原问题的最优值,并避免子问题的重复计算; 4.根据计算最优值时得到的信息,构造最优解。 话不多说,我们来看几个具体的例子慢慢理解它: 1.矩阵连乘 给定n个可连乘的矩阵{A1, A2, …,An},根据矩阵乘法结合律,可有多种不同计算次序,每种次序有不同的计算代价,也就是数乘次数。例如给定2个矩阵A[pi,pj]和B[pj,pk],A×B为[pi,pk]矩阵,数乘次数为pi×pj×pk。将矩阵连乘积Ai…Aj简记为A[i:j] ,这里i≤j。考察计算A[i:j]的最优计算次序,设这个计算次序在矩阵Ak和Ak+1之间将矩阵链断开,i≤k<j,则A[i:j]的计算量=A[i:k]的计算量+A[k+1:j]的计算量+A[i:k]和A[k+1:j

Java高级特性 第11节 JUnit 3.x和JUnit 4.x测试框架

点点圈 提交于 2020-04-30 03:21:29
一、软件测试   1.软件测试的概念及分类   软件测试是使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度 、完全度和质量的软件过程。   软件测试过程:       2.软件测试的分类   按是否关心软件内部结构和具体实现角度来分: 黑盒测试(Black-box Testing)   黑盒测试也称功能测试,测试中把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据。 白盒测试(White-box Testing)   白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒指的打开盒子,去研究里面的源代码和程序结果。 灰盒测试(Gray-Box Testing)   灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。   从软件开发过程的阶段,可分为: 单元测试(Unit Testing)   单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。Findyou又称为模块测试 测试阶段:编码后 测试对象:最小模块 测试人员:白盒测试工程师或开发工程师

UOJ#449. 【集训队作业2018】喂鸽子

旧街凉风 提交于 2020-04-29 10:19:57
#449. 【集训队作业2018】喂鸽子 DP好题 法一:min-max容斥 处理前m个,最快吃饱的鸽子期望的时间 根据期望的定义 考虑每个方案数的概率*期望次数 枚举前m个用了x个,概率都是(1/m)^x*Em(x) 而Em(x)表示往前m个扔了x个期望的总共次数,就是x*n/m 考虑用了x个的方案数 生成函数EGF思想。 而出现一个有k次就会停止。最后一个位置一定会使得一个鸽子饱了。 f[i][j]前i个,总共用了j个,没有一个有k次的方案数 g[i][j],。。。。。。。。有一个有k次的方案数 NTT优化转移。 f和1/k!的项乘出来的贡献加到g里去即可。 O(n^2klog(nk)) 法二:“有效玉米序列” 神仙思路 只考虑“有实质变化”的玉米,即喂给了一个没有饱的鸽子的玉米 还是考虑每个“有效玉米序列”的贡献,就是出现概率*期望 一个固定的“有效玉米序列”,出现概率和期望都和每次扔玉米时已经饱的鸽子有关系 所以状态多记录上饱的鸽子数量 至于怎样判断一个鸽子饱了 先填“白色”有效玉米, 想让一个鸽子饱了,就钦定之前k-1个白玉米染上色! 所以这个白玉米还是“对未来承诺”,或者对未来预留的trick 状态保留贡献和和概率和即可。是可以转移的。 复杂度:O(n^2k) #include<bits/stdc++.h> #define reg register int