自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Swift 使用StreamingKit播放在线音频

StreamingKit是用于音视频播放的IOS第三方框架,github地址为:https://github.com/tumtumtum/StreamingKit具体关于如何安装引入到项目中,可以参考官方pod的方法,也可以直接下载代码并将文件添加进项目中。需要注意的是,由于StreamingKit是由OC编写的,所以需要进行配置桥接文件。具体的配置方法和其它混编类似,只需要引入以下头文件即可:#import "STKAudioPlayer.h"由于路径不同可能需要调整填入桥接文件中具体的代码,但

2021-08-26 13:40:07 865

原创 Swift 利用Alamofire解析JSON串并获得信息

Alamofire是IOS开发时高效的网络第三方工具库,有时我们需要将本地的一些数据调用API上传到云端,再接收处理完成后的结果,在这个过程中,最终我们需要的信息是以JSON串进行返回的。下面,我将以一个单词信息查询API为例,演示Alamofire的使用方法。首先列出该API返回的JSON串格式:{ "word": "cell", "accent": "/sel/", "mean_cn": "n.\u7ec6\u80de\uff1b\u5c0f\u9694\u95f4",

2021-08-26 11:11:41 1423 1

原创 Robocup3D如何进行代码的编写

1.信息接口对于机器人的代码编写而言,最重要的部分就是对环境和场上的具体情况有较为清楚的认知,一般这些数据都会整合到统一的接口中,这个接口就放在主目录下的worldmodel文件中。其中,worldmodel.h是声明关于一些场上信息,比如球的位置等等,而worldObject.h则主要是用于提供队友的或对手的信息。比如,场上的11个机器人都有自己的对应编号,当某个机器人想知道自己哪一号时,就可以通过以下语句进行调用:worldModel->getUNum()worldModel是world

2021-08-20 14:28:27 1429 1

原创 Swift实现coreML视觉识别案例解析

当需要在IOS中使用coreML来进行视觉识别功能时,Apple的开发者官网提供了较多的案例可以用于参考学习。下面我将结合源码(ViewController.swift和VisionObjectRecognitionViewController.swift)来解析整个实现视觉识别的代码逻辑以及流程。当我们需要用到该功能时,只需要新建swift文件粘贴源码,然后导入coreML模型,再修改指定位置的对应模型名称,绑定main.storyboard界面即可。ViewController.swiftimpor

2021-08-13 15:59:07 671

原创 Robocup3D项目搭建

注:文中所有步骤仅以 ubuntu18.04 作为测试平台1.下载项目文件UT的开源项目GitHub地址为:UT开源仿真3D代码将项目代码克隆到本地2.安装代码运行环境更新仓库:sudo apt-get update安装代码运行所需要的编译模块:sudo apt-get install g++sudo apt-get install subversionsudo apt-get install cmake3.安装仿真球场运行环境这一步中的环境主要指运行虚拟比赛平台所需要的软件和相

2021-08-12 18:04:38 1616

原创 makefile编译文件分析

在BHuman中,我们编译代码的时候,会在Make/Linux目录下输入make,然后就能够开始进行项目的编译,这主要是依靠于该文件目录下的makefile文件。makefile具体实现该文件具体内容如下:MARE := ../../Util/SimRobot/Util/mare/Linux/bin/mareCONFIG ?= DevelopQTINCLUDE = `for d in $(shell find /usr/include /usr/local/include -name qt5 \(

2021-08-10 16:48:14 175

原创 Representation和Module理论详解

BHuman框架中,最为核心的部分就是Representation和Module,几乎所有的重要功能都是由这种体系来实现的。如果需要重构BHuman的代码框架添加自己需要的功能,或者借鉴Bhuman重写一个新的机器人框架,学习Representation和Module理论都是首要的。Representation和Module的功能根据BHuman开源库中Coderelease2019里的描述,Module的主要功能是执行某一特定的任务,比如图像处理或者...

2021-08-09 16:20:35 316

原创 Record for learning BHuman frame

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-08-09 11:09:04 104

原创 通过Python终端输入命令对NAO机器人进行实时控制

功能简述通过运行python文件,可以对NAOv6机器人的动作进行控制,实现基本的前进后退转弯等动作,只需要在终端输入对应命令即可环境配置及运行说明:前提:ubuntu18.04 系统安装Python2.7,程序仅能在该版本中运行。将pynaoqi-python2.7-2.8.6.23-linux64解压放到主目录中。设置环境变量。在终端输入:gedit ~/.bashrc在行尾添加以下语句,具体路径根据本地电脑情况进行更改:export PYTHONPATH=${PYTH

2021-07-23 10:22:22 984

原创 JOHNSON全源最短路

由于dijkstra不能用于带有负边权的图,而Floyd算法的复杂度又过高,在处理稀疏图时往往耗时较久。解决的方案是,使在有负边而无负环的情况下,依然可以使用dijkstra算法。所谓的Johnson算法,其实就是在执行dijkstra算法之前,先执行一边Bellman-ford算法,通过外加一个点,给所有的原点赋一个相对值,这样既可以使负边消失,又如同重力势能一样,只改变相对值,可以在最后计算的时候复原。需要注意的点:1.为了使速度更快,我们使用Bellman-ford算法的堆优化版本,即SPFA

2021-04-20 11:16:52 145

原创 图上的严格次路径

狄杰特斯拉定理不仅可以用来求最短路,同时也可以在同样的复杂度里完成次短路的计算。核心在于开两个数组,分别记录最短路和次短路,当一个点转移到另一个点时,可以通过比较其值和当前点的最短路和次短路值的大小,来进行更新。另外的功能是,可以统计有起点和终点之间,存在多少条最短路径,以及多少条此短路径。模板代码如下:#include <bits/stdc++.h>using namespace std;const int maxn=1005,H=10005,INF=0x3f3f3f3f;typ

2021-04-20 11:16:38 90

原创 狄尔沃斯定理求链的划分

狄尔沃斯定理(Dilworth’s theorem)是关于偏序集的极大极小的定理.该定理断言:对于任意有限偏序集,其最大反链中元素的数目必等于最小链划分中链的数目.洛谷P1020导弹拦截当给出一个数列,我们如果要将这个数列从左到右分割取(可以不连续的)子序列,并且要使这个序列是尽可能的长的上升子序列,问可以将原序列分为多少部分。根据狄尔沃斯定理,上述链划分规则得到的链的数目,等于最长反链的长度。上升子序列的反链即为不上升子序列,所以,我们要求的答案就是该序列的最长不上升子序列。例题类似,不上升序列的反

2021-04-20 11:16:23 369

原创 FLOYD算法的应用

Floyd算法核心片段如下:for(int k=1;k<=n;k++) { for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { d[i][j]=min(d[i][j],d[i][k]+d[k][j]); } } }最初Floyd算法是用来求全源最短路,复杂度为n3,但

2021-04-20 11:16:06 332

原创 CODEFORCES ROUND #652 (DIV. 2)

A.FashionabLee题目的大意是一个正多边形,问是否可以找到两条边,一条平行于x轴,一条平行于y轴。首先,可以观察出,边数为4的倍数的多边形,假如以原点为中心,则是可以分为两条垂直于x的边,两条平行于y轴的边,其余的边可以均匀地分散在四个象限。但是,如果多添加的边不是4的倍数,那么这种状态就会被打破,反之仍然成立。所以边数是4的倍数的四边形是合题的。对于其他情况,其实要找到这样的边,必然存在两条边相对的夹角的度数为90,我们就可以利用正多边形的内角来否定其他情况不成立。#include&lt

2021-04-20 11:15:51 132

原创 费马小定理与等比数列的求和(MOD 质数)

费马小定理:任意整数a, a^p≡a (mod p),p是质数。定理:1.对a/b≡a*x (mod n),则称x 为b的乘法逆元,记为b^-1。2.当模数p为质数,且b与p互质(即b不为p的倍数)时,b的乘法逆元为b^(p-2)。对2的简单证明:b*b^-1≡1 (mod p)。①由费马小定理,b^ (p-1)≡1 (mod p),bb^ -1b^ (p-1)≡1 (mod p),即 b*b^(p-2)≡ 1 (mod p)。对比①,所以得到2的结论。所以,对等比数列和公式 a*(q^n-1)

2021-04-20 11:15:35 705

原创 数论:欧拉函数的线性求取与应用

例题:GCD最大公约数这道题中,要我们找到在1~N中找到数对(x,y)来使,gcd(x,y)=d,但是d是一个素数。了解了欧拉函数之后,我们可以这样假设,对于a,b而言,gcd(a,b)=1,二者互质,那么如果给a,b都乘上一个质数d,那么显然最大公约数就变成了d,即gcd(a×d,b×d)=d。这样,对于一个数 x 而言,根据欧拉函数(在此为phi[ ]数组)的定义,如果有 t个质数d,可以使d×x <= n,phi[ x ]×t 就是x与x小的所有数组合时,形成的合题数对。由上面的分析,我们

2021-04-20 11:15:17 99

原创 通过埃式筛法筛选区间素数

例题POJ2689添加链接描述我们通过要求得一个区间[L,R]内的素数,由于L和R的数值可能会很大,如果用传统的线性筛来求解的话,会导致的问题。为了能够解决这个矛盾,我们利用效率低一点的埃氏筛来完成该题。埃式筛的基本原理是,对于数n,必然存在2~√n之间的质数p是n的因数,所以这些质数的倍数k*p必然是合数。所以我们需要枚举筛完这个区间所需要的质数,然后枚举它的倍数然后筛去以它为因数的合数,对于该题,我们只需要筛出50000以内的质数就够了,这一步可以借用前面的线性筛来完成。由于,如果令一个整数为k=

2021-04-20 11:14:55 351

原创 最短路径还原的实现方法

例题链接:CF20C我们通过了Dijkstra算法或者SPFA算法等等获得了最短路径,记为 d[ k ],这就出现了一个逆向问题,怎么去还原这条路径。题目中给了我们一张图,然后要我们求 点1 到 点n 的具体某一条最短路径。我们知道,如果一条最短路径里面包含 i-1 和 i 这两个点,i-1 到 i 的边权值为 w 。则必然有关系式:d[ i ]=d[ i-1 ]+w所以,我们可以根据这条规则,通过深度优先搜索来确定最短路径。需要注意的点是,由于图可以带有环,所以必须标记哪些点已经被标记为最短路径;

2021-04-20 11:14:21 234

原创 二分法+DIJKSTRA算法

洛谷P1462通往奥格瑞玛的道路设某条从 1 到 n 的路径里,经过单个城时所花费的费用的最大值为 T,则这道题我们要求的就是在所有可能路径里面,选T最小的情况。我们可以先发现,对于任何一个可能合题的T,值必须要满足一点:在去掉所有收费比T大的点去掉后,还是存在一条路使可以从 1 到 n 。那么这样就形成了检验条件,我们就可以将二分法使用到该题中。可以先把所有点的收费排序,然后从用二分法枚举,最终得到答案。一开始为了检验原图中是否存在 1 到 n 的通路,可以先检验收费最大的点的收费值,这样就相当于在

2021-04-19 13:38:14 154

原创 POJ3662 最短路+动态规划(分层图最短路)

POJ3662 Telephone Lines该题要在一张给定的图上,从 1 到 N 找到一条路径,该路径上所有的边权里面,可以选择不超过K个边权,免除这些边权的花费,只需要花费剩下的边权里面的最大边权的值,即可以完成 1 到 N 的连接。我们可以定义一个数组 dp[ i ][ j ],表示从 1 到 i ,已经选择了 j 条边被免除时,1 到 i 剩下的边里面最大的边权。从中我们可以看出,这道题具有动态规划特征。对于每一条边,都具有被选择和不被选择两种情况。所以,状态转移方程为:dp[ i ][

2021-04-19 13:36:40 322

原创 最大子段和

洛谷P1115最大字段和这是该类问题的初级模式,即给与一个数列,求连续的一段元素的和最大。我们可以想象,当某一子段 s 的和为正数时,当 s 加下一个数 a 时,对 a 来说,s可看成一个整体,那么 s 可以使由 s和 a组成的新子段变大,即s是有可能在最大子段中的,并且s是最大子段的头部。但是如果 s<0,如果 s 在最大子段中,如果将 s 去掉,那么最大子段就会变得更大,那么就矛盾了,所以 s 不存在于最大子段中。所以我们只需要从第一个数开始扫一遍,如果s>0,那么就将a加进去,形成新

2021-04-19 13:34:54 147

原创 CODEFORCES ROUND #638 (DIV. 2)

A. Phoenix and Balance一个数组里共有n个数,每一个数都是2的k次方,k是从1到n的数,且保证n是偶数。现在要将其均分为两堆,要求使两堆的和的差值最小,求最小的差值。如果我们将2n加入任意一个堆,则必然这个堆是更大的。为了使二者差值尽量的小,那么就要使另外一个堆尽量地大,所以需要将小于2n且尽量大的n/2个数加到另一个堆里。#include<iostream>#include<algorithm>#include<cstdio>#inclu

2021-04-19 13:31:35 75

原创 Educational Codeforces Round 86 (Div. 2)

A. Road To Zero给两个数x,y,通过a,b两种操作使x,y都归为0,求总花费。对于1和1,我们可以分别执行一次a操作,也可以只执行一次b操作,就使二者归为0。为了尽可能的用更少的钱,如果b<2*a,那么我们就采用第二种,否则使用第一种方法。这样,我们就可以使不相同的x,y的中一个数先变为0。当只剩一个数不为零时,我们只能采用a类型操作,花费是固定的。#include<iostream>#include<algorithm>#include<cstdi

2021-04-19 13:29:57 65

原创 数的拆分专题

情况一:将一个数拆分为2的k次方的和的拆分方式和,例如,4可以拆分为1 +1+1+1, 1+1+2, 2+2, 4,一共有四种拆法。我们定义数组dp[i]为 数 i的拆分方式总数。通过分析,对于一个奇数来说,他的拆分总数和比它小一位的偶数是相同的,即dp[i]=dp[i-1];对于偶数,我们分为两种情况,当偶数的拆分里没有1时,那么显然dp[i]=dp[i/2],因为每一位拆分的项数都可以除以二,当偶数的拆分里有1时,则有dp[i]=dp[i-1],因为必然有1故减去1不影响总数。根据加法原理,可以得

2021-04-19 13:26:38 1051

原创 动态规划:多重部分和

例题POJ1276题目中给出了一给最大金额cash,然后列出了n个信息,分别记第i种的货币数量为m[i],面额为a[i]。求可以得到的小于给定cash的最大金额。即从第i种货币中拿出一部分,使得到可能的最大的答案。记 dp[i+1][j] 为前i种货币里凑得金额 j时第i 种货币可以所剩的最大数量。若不能加到j则记为-1我们的判断顺序为:1 . 当dp[i][j]>=0时,表明在前 i-1 种的货币的选取时就可以选出金额 j了,所以此时dp[i+1][j]=m[i],即可以不用取第 i 种。

2021-04-19 13:16:45 119

原创 动态规划:最大矩阵寻找

例题选自洛谷P1387添加链接描述题目要求在一个矩阵中寻找一个全为1的正方形,要求可能的最大的正方形的边长。这个题如果用暴力搜索既不直观实现起来也不方便。我们用动态规划来求解。作为一个很典型的题型,看到正方形、矩阵时,应该要想到右下角坐标的记录作用。那么,对于右下角点的状态可以直接影响的是它左边、上边和左上边的三个点。我们可以设 dp[i][j] 为以坐标(i,j)为右下方边界点的正方形的最大边长。那么,对于(i,j)这个点而言,我们要把以(i-1,j-1)为右下角的正方形的部分尽量取完,最理想的情况

2021-04-19 13:14:45 312

原创 Codeforces Round #636 (Div. 3) (部分)

A Candies寻找一个x使 x+2x+…+(2^(k-1)x = n (k>1)。我们可以抽象地将等号左边的式子看做x乘上一个数 m,m前k个2的次方的和。我们将m转化为二进制数描述的角度,可以看出m在二进制下一共有k位,且每一位上的数字都为1。那么在给出的n的条件下这样的m是有限的,我们可以直接进行枚举,就可以在很短的时间内把所以可能的m全部检验一遍,如果存在这样的m使m整除n,则商就是所求的x,否则x不存在。#include<iostream>#include<alg

2021-04-19 13:10:58 78

原创 基于阿里云Windows虚拟主机的wordpress个人博客搭建

花费大概一天的时间,终于搭建好了这个博客,那么第一篇文章我就来记录一下基于wordpress的博客搭建过程以及诸多细节。第一步,我们搭建网站需要购买一个域名,国内提供服务的大厂有腾讯和阿里云,我个人是选择的阿里云。购买链接:添加链接描述这个流程根据系统的引导就可以完成。然后我们需要再去购买一个可用的虚拟主机,在阿里云上学生是可以用极低的价格购入的,链接:添加链接描述。值得一提的是,虚拟主机的操作系统可以选择Windows和Linux,现在大多数虚拟机博客的搭建都是用的linux,但这篇指南是基于Wind

2021-04-19 12:59:22 730

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除