斐波那契数列是我们较为熟悉的一类数列了,在学习递归和递推的时候我们就已经能求解 \(n\) 较小的情况了;斐波那契数列的定义如下:
\[\left\{\begin{matrix} F_{n}=0& n=0\\ F_{n}=1& n=1\\ F_{n}=F_{n-1}+F_{n-2}& n\ge 2 \end{matrix}\right. \]卢卡斯数列经常作为一个工具来研究斐波那契数列,所以这里也会提到一部分
其定义如下:
\[\left\{\begin{matrix} L_{n}=2& n=0\\ L_{n}=1& n=1\\ L_{n}=L_{n-1}+L_{n-2}& n\ge 2 \end{matrix}\right. \]第 \(n\) 个斐波那契数列可以在 \(O(n)\) 的时间内用递推来解决,但我们有更快速的方式来计算。
例如我们有下面的公式
\[F_{n}=\frac{(\frac{1+\sqrt{5}}{2})^{n}-(\frac{1-\sqrt{5}}{2})^{n}}{\sqrt{5}} \]证明:
由上面我们知道斐波那契数列的递推公式为
\[F_{n}=F_{n-1}+F_{n-2}(n\ge 2) \]我们设
\[F_{n}-\lambda F_{n-1}=\mu(F_{n-1}-\lambda F_{n-2}) \]为什么这么设呢,这是因为我们发现构造一个等差数列的话是很难的,所以我们尝试构造一个等比数列 \(b_{n}=q\times b_{n-1}\),按照上面的设法,把 \(F_{n}-\lambda F_{n-1}\) 看作 \(b_{n}\) 即可发现我们构造了一个等比数列的公式,然后我们后面才能利用等比数列的通项公式进行求解。
拆开移项得到
\[\left\{\begin{matrix} \lambda+\mu=1\\ -\lambda\times \mu=1 \end{matrix}\right. \]解得
\[\left\{\begin{matrix} \lambda=\frac{1+\sqrt{5}}{2}\\ \mu=\frac{1-\sqrt{5}}{2} \end{matrix}\right. \text{或} \left\{\begin{matrix} \lambda=\frac{1-\sqrt{5}}{2}\\ \mu=\frac{1+\sqrt{5}}{2} \end{matrix}\right. \]将其带回原式子可以得到
\[\left\{\begin{matrix} F_{n}-\frac{1+\sqrt{5}}{2}F_{n-1}=\frac{1-\sqrt{5}}{2}(F_{n-1}-\frac{1+\sqrt{5}}{2}F_{n-2})\\ F_{n}-\frac{1-\sqrt{5}}{2}F_{n-1}=\frac{1+\sqrt{5}}{2}(F_{n-1}-\frac{1-\sqrt{5}}{2}F_{n-2}) \end{matrix}\right. \]然后根据等比数列通项公式,我们得到
\[\left\{\begin{matrix} F_{n}-\frac{1+\sqrt{5}}{2}F_{n-1}=(\frac{1-\sqrt{5}}{2})^{n-2}(F_{2}-\frac{1+\sqrt{5}}{2}F_{1})\\ F_{n}-\frac{1-\sqrt{5}}{2}F_{n-1}=(\frac{1+\sqrt{5}}{2})^{n-2}(F_{2}-\frac{1-\sqrt{5}}{2}F_{1}) \end{matrix}\right. \]然后上式乘以 \(\frac{1-\sqrt{5}}{2}\) ,下式乘以 \(\frac{1+\sqrt{5}}{2}\) 化简就可以得到上面的通项公式了。
或者可以看看上面这位b站大佬的证明过程,比上面的方法更好理解。
需要注意的是,这个公式对于精度要求较高。
其实他的通项公式和斐波那契的很像
\[L_{n}=(\frac{1+\sqrt{5}}{2})^{n}+(\frac{1-\sqrt{5}}{2})^{n} \]事实上有:
\[\frac{L_{n}+F_{n}\sqrt{5}}{2}=(\frac{1+\sqrt{5}}{2})^{n} \]其实还有一个式子:
\[L_{n}^{2}-5F_{n}^{2}=-4 \]我们在之前的题目遇见的求斐波那契数列第 \(n\) 项的值范围都是很小的,因为递归的速度太慢,如果数据范围到达了 \(10^{18}\) 那么我们递推也是一定 TLE 的,所以这个时候就需要用到我们的矩阵加速递推。
设 \(Fib(n)\) 表示一个 \(1\times 2\) 的矩阵 \(\begin{bmatrix}F_{n}&F_{n+1}\end{bmatrix}\) 。我们希望依据 \(Fib(n-1)=\begin{bmatrix}F_{n-1}&F_{n-2}\end{bmatrix}\) 推出 \(Fib(n)\)。
试着来推导一个矩阵 \(\text{base}\),使 \(Fib(n-1)\times \text{base}=Fib(n)\),也就是 \(\begin{bmatrix}F_{n-1}&F_{n-2}\end{bmatrix}\times \text{base}=\begin{bmatrix}F_{n}&F_{n-1}\end{bmatrix}\)。
因为 \(F_{n}=F_{n-1}+F_{n-2}\),所以 \(\text{base}\) 矩阵第一列一定是 \(\begin{bmatrix}1\\1\end{bmatrix}\),这样才能在进行乘法运算的时候才能令 \(F_{n-1}\) 与 \(F_{n-2}\) 相加,从而得出 \(F_{n}\)。同理,为了得出 \(F_{n-1}\),矩阵 \(\text{base}\) 的第二列应该为 \(\begin{bmatrix}1\\0\end{bmatrix}\)。
综上所述,\(\text{base}=\begin{bmatrix}1&1\\1&0\end{bmatrix}\) ,原式化为 \(\begin{bmatrix}F_{n-1}&F_{n-2}\end{bmatrix}\times \begin{bmatrix}1&1\\1&0\end{bmatrix}=\begin{bmatrix}F_{n}&F_{n-1}\end{bmatrix}\)。
定义初始矩阵 \(ans=\begin{bmatrix}F_{2}&F_{1}\end{bmatrix}=\begin{bmatrix}1&1\end{bmatrix}\),\(\text{base}=\begin{bmatrix}1&1\\1&0\end{bmatrix}\)。那么,\(F_{n}\) 就等于 \(ans\times \text{base}^{n-2}\) 这个矩阵的第一行第一列的元素,也就是 \(\begin{bmatrix}1&1\end{bmatrix}\times \begin{bmatrix}1&1\\1&0\end{bmatrix}^{n-2}\) 的第一行第一列的元素。
注意矩阵乘法不满足交换律,所以不能将两个矩阵反过来,另外,对于 \(n\le 2\) 的情况,可以直接输出 \(1\)。
P1962斐波那契数列 - 洛谷
参考代码:
#include<bits/stdc++.h>
#define int long long
#define P 1000000007
#define N 110
using namespace std;
int n;
struct sb{int m[N][N];}ans,base;
inline sb cheng(sb a,sb b,int ok)
{
sb c;
for(int i=1;i<=ok;i++)
{
for(int j=1;j<=ok;j++)
{
c.m[i][j]=0;
for(int k=1;k<=ok;k++)
c.m[i][j]=(c.m[i][j]+a.m[i][k]*b.m[k][j])%P;
}
}
return c;
}
inline sb jzksm(sb x,int y)
{
sb res=x;y--;
while(y)
{
if(y&1)res=cheng(res,x,2);
x=cheng(x,x,2);
y>>=1;
}
return res;
}
signed main()
{
cin>>n;
if(n==1||n==2){puts("1");return 0;}
ans.m[1][1]=1;ans.m[1][2]=1;
base.m[1][1]=1;base.m[1][2]=1;
base.m[2][1]=1;base.m[2][2]=0;
base=jzksm(base,n-2);
ans.m[1][1]=(base.m[1][1]+base.m[1][2])%P;
cout<<ans.m[1][1]<<endl;
return 0;
}
我们可以用上面的方法得到下面两个等式:
\[F_{2k}=F_{k}(2F_{k+1}-F_{k}) \]\[F_{2k+1}=F_{k+1}^{2}+F_{k}^{2} \]于是我们可以通过这样的方法快速计算两个相邻的斐波那契数(常数比矩阵法小)。返回值是一个二元组 \((F_{n},F_{n+1})\)。
这里只列出一部分。
卡西尼性质:\(F_{n-1}F_{n+1}-F_{n}^{2}=(-1)^{n}\)
附加性质:\(F_{n+k}=F_{k}F_{n+1}+F_{k-1}F_{n}\)
性质二中 \(k=n\),我们得到 \(F_{2n}=F_{n}(F_{n+1}+F_{n-1})\)
由性质三可以归纳证明,\(\forall k\in \mathbb{N} ,F_{n}\mid F_{nk}\)
上述性质可逆,即 \(\forall F_{a}\mid F_{b},a\mid b\)
GCD 性质:\(\gcd(F_{m},F_{n})=F_{\gcd(n,m)}\)
不难发现有个上面提到的式子和三角函数公式很像:
\[\frac{L_{n}+F_{n}\sqrt{5}}{2}=(\frac{1+\sqrt{5}}{2})^{n} \]\[\cos nx+i\sin nx=(\cos x+i\sin x)^{n} \]上面两个式子很像。
\[L_{n}^{2}-5F_{n}^{2}=-4 \]\[\cos ^{2}x+\sin ^{2}x=1 \]这两个式子也很像。
那么我们大胆推测一下,是不是卢卡斯数列构成的图像很像余弦函数,斐波那契数列构成的图像很像正弦函数?
根据:
\[(\frac{1+\sqrt{5}}{2})^{m}(\frac{1+\sqrt{5}}{2})^{n}=(\frac{1+\sqrt{5}}{2})^{n+m} \]可以得到两下标之和的等式:
\[2L_{m+n}=5F_{n}F_{m}+L_{n}L_{m} \]\[2F_{m+n}=F_{m}L_{n}+L_{m}F_{n} \]于是推论就有二倍下标的等式:
\[L_{2n}=L_{n}^{2}-2(-1)^{n} \]\[F_{2n}=F_{n}L_{n} \]这也是一种快速倍增下标的办法。
考虑模 \(p\) 意义下的斐波那契数列,可以容易地使用抽屉原理证明,该数列是有周期性的。考虑模意义下前 \(p^{2}+1\) 个斐波那契数对(两个相邻数配对):
\[(F_{1},F_{2}),(F_{2},F_{3}),...,(F_{p^{2}+1},F_{p^{2}+2}) \]\(p\) 的剩余系大小为 \(p\),意味着在前 \(p^{2}+1\) 个数对中必有两个相同的数对,于是这两个数对可以往后生成相同的斐波那契数列,那么他们就是周期性的。
卡特兰数也算是比较常见的一种
其问题灵活多变,较为经典的有:
在圆上选 \(2n\) 个点,将这些点成对连接起来使得所得到的 \(n\) 条线段不相交的方案数。
一个栈的进栈序列为 \(1,2,3,\dots,n\) 有多少个不同的可能的出栈序列。
\(n\) 个节点可以构造多少个不同的二叉树?
如果是给定两种操作,一个操作的个数不超过另一种操作的个数,或者两种操作没有交集,求合法操作方案的总数,那么一般就是卡特兰数。
其对应的序列为 \(1,1,2,5,14,42,132...\)
为了防止冲突,用 \(H(i)\) 来表示第 \(i\) 个卡特兰数。
该递推关系的解为:
\[H_{n}=\frac{C_{2n}^{n}}{n+1}(n\ge 2) \]\[H_{n}= \left\{\begin{matrix} 1&n=0\\ 1&n=1\\ \sum_{i=1}^{n}H_{i-1}H_{n-i}&n\ge 2 \end{matrix}\right. \]\[H_{n}=\frac{H_{n-1}(4n-2)}{n+1} \]实际上最常用的是第一个公式的变形:
\[H_{n}=C_{2n}^{n}-C_{2n}^{n-1} \]例题:P1044[NOIP2003 普及组] 栈 - 洛谷
直接套用公式二即可。
参考代码:
#include<bits/stdc++.h>
#define int long long
#define N 1000100
using namespace std;
int n,c[N];
signed main()
{
c[0]=1;
cin>>n;
for(int i=1;i<=n;i++)
c[i]=(c[i-1]*(4*i-2))/(i+1);
cout<<c[n]<<endl;
return 0;
}
卡特兰数的递推式我们前面说过了,也就是这个:
\[H_{n}=\sum_{i=0}^{n-1}H_{i}H_{n-i-1}(n\ge 2) \]其中 \(H_{0}=1,H_{1}=1\) 设它的普通生成函数为 \(H(x)\)
我们发现卡特兰数的递推式与卷积的形式很相似,因此我们用卷积来构造关于 \(H(x)\) 的方程:
\[H(x)=\sum_{n\ge 0}^{}H_{n}x^{n} \]\[=1+\sum_{n\ge 1}^{}\sum_{i=0}^{n-1}H_{i}x^{i}H_{n-i-1}x^{n-i-1}x \]\[=1+x\sum_{i\ge 0}^{}H_{i}x^{i}\sum_{n\ge 0}^{}H_{n}x^{n} \]\[=1+xH^{2}(x) \]解得:
\[H(x)=\frac{1\pm\sqrt{1-4x}}{2x} \]那么这就产生了一个问题:我们应该取哪一个根呢?我们将其分子有理化:
\[H(x)=\frac{2}{1\mp\sqrt{1-4x}} \]代入 \(x=0\),我们得到的是 \(H(x)\) 的常数项,也就是 \(H_{0}\)。当 \(H(x)=\frac{2}{1+\sqrt{1-4x}}\) 的时候有 \(H(0)=1\),满足要求。而另一个解会出现分母为 \(0\) 的情况,舍去。
因此我们得到了卡特兰数生成函数的封闭形式:
\[H(x)=\frac{1-\sqrt{1-4x}}{2x} \]新粉请关注我的公众号后台有人看了我昨天的文章财报说,阿里巴巴二季度减少9241人。。。说,能不能让我看一眼腾讯的情况。于是我就看了一下,二季度财报,腾讯少了5000多员工。和阿里比起来,差不多减少了一半。这一篇也就算是收尾吧。要是再有人让看看京东百度拼多多的,其实都可以自己去看财报,信息都是公开透明的,财报的英语也不难懂。有关腾讯的很多东西,前几天写过了。大家有兴趣去读一读:腾讯怎么了?据说卖美团股票,升级先不涨薪,不提供免费水果。。。这篇文章看起来是要水一篇了。不过昨天有人在我粉丝微信上问我上一篇文章的问题,我引用一下:由于财报信息并不会披露这些减少的人里面有多少是被“毕业”的,有多少是新招的,有多少是主动离职的。所以我们也很难精确的估计出从今年年初开始的裁员,阿里巴巴具体裁掉了多少人。 努力赚钱的小作者,公众号:飞总聊IT财报说,阿里巴巴二季度减少9241人。。。对方问我的问题是觉得这段话有点绕。我以腾讯为例再说一遍,我们知道财报说,员工差值是少了5000。但是这个差值是怎么造成的,里面有多少是因为新招的员工来了,多少是因为主动离职的,又有多少是被裁掉的,这些细节我们是不知道的。所
下述内存主要讲述了《JavaScript高级程序设计(第3版)》第4章关于“变量、作用域和内存问题”。 JavaScript变量松散类型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已。 (1)基本类型的值在内存中占据固定大小的空间,因此会保存在栈内存中; (2)引用类型的值是对象,保存在堆内存中。 堆内存:随意存储,一般由程序员分配释放,或者程序结束时有OS回收。 栈内存:先进后出,有编译器自动分配释放,存放函数的参数值、局部变量的值等。JavaScript不允许直接访问内存中的位置,也就是说不能直接操作对象的内存空间。操作对象时,实际上是在操作对象的引用而不是实际的对象。复制 基本类型(undefined、null、boolean、number、string)复制,会创建这个值的一个副本,完全独立; 引用类型(对象)复制,复制的其实是指针,两个变量引用同一个对象。varnum1=57; varnum2=num1; num1=38; console.log(num1,num2);//3857 varobj1=newObject(); varobj2=obj1; obj1.
一.导言经典的计算机视觉问题是通过数学模型或者统计学习识别图像中的物体、场景,继而实现视频时序序列上的运动识别、物体轨迹追踪、行为识别等等。然而,由于图像是三维空间在光学系统的投影,仅仅实现图像层次的识别是不够的,这在无人驾驶系统、增强现实技术等领域表现的尤为突出,计算机视觉的更高层次必然是准确的获得物体在三维空间中的形状、位置、姿态,通过三维重建技术实现物体在三维空间的检测、识别、追踪以及交互。近年来,借助于二维图像层面的目标检测和识别的性能提升,针对如何恢复三维空间中物体的形态和空间位置,研究者们提出了很多有效的方法和策略。相比图像层面的二维物体检测问题,如何通过图像理解物体在三维空间中的位置通常更加复杂。较为准确的恢复物体的三维信息包含恢复物体表面每个点的三维坐标及三维点之间的关系,计算机图形学中物体三维特征可以表示为重建物体表面的三角化网格和纹理映射,不要求特别精确地场景下,也可以仅仅用三维空间中的立方体表示物体位置。由射影几何学,仅仅依赖一副图像是无法准确恢复物体的三维位置,即使能得到相对位置信息,也无法获得真实尺寸。因此,正确检测目标的3D位置最少需要多个相机或者运动相机组
COOKIE与SESSION简介:1、cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要‘保持状态’,因此cookie就是在这个场景下诞生。cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”。2、cookie虽然在一定程度上解决了‘保持状态’的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且他保存在服务器,有较高的安全性。这就是session。问题来了,基于http协议的无状态特性,服务器根本就不知道访问者是‘谁’。那么上述的cookie就起到桥接的作用。我们可以给每隔客户端的cookie分配一个唯一的id,这样用户在访问时,通过cookie,服务器就知道来的人是‘谁’。然后我们再根据不同的cookie的id,在服务器上保存一段时间的私密资料,如“帐号密码”等。3、总结而言:cookie弥补了http无状态的不足,让服
监督式机器学习实际应用中的机器学习在大部分情况下我们都会使用监督式学习。监督式学习指的是你拥有一个输入变量和一个输出变量,使用某种算法去学习从输入到输出的映射函数这种学习方式就称之为监督式学习,因为算法学习从训练数据集学习的过程可以被看成类似于一名教师在监督学习学习的过程。我们已经知道了正确的答案,而算法不断迭代来对训练数据做出预测同时不断被一名教师修正。当算法达到一个可接受程度的表现时学习过程停止。监督式学习问题可以进一步被分为回归和分类问题分类:分类问题指的是当输出变量属于一个范畴,比如“红色”和“蓝色”或者“生病”和“未生病”。回归:回归问题指的是输出变量是一个实值,比如“价格”和“重量”还有一些种类的问题建立在分类和回归之上,包括推荐问题和时序预测一些流形的监督式机器学习算法的例子:回归问题中的线性回归 分类和回归问题中的随机森林 分类问题中的支持向量机非监督式机器学习非监督式学习指的是我们只拥有输入变量但是没有相关的输出变量。非监督式学习的目标是对数据中潜在的结构和分布建模,以便对数据作更进一步的学习。这种学习方式就称为非监督式学习,因为其和监督式学习不同,对于学习并没有确切
不久前,Docker官方公布的数据显示,全球已有46万个应用Docker化,并且实现两年增长3000%。以Docker为代表的容器技术在发展速度上,业已超过了曾经的虚拟化技术和云计算技术。或许也正因如此,2015年被称为Docker野蛮扩张的一年,先后通过了OCI和CNCF两大标准组织的确立,更是在中国引发了如火如荼的Docker创业之风,出现了阿里百川、网易蜂巢等大批基于Docker的容器云。诞生于2013年的Docker技术,让那些成熟的云计算服务突然显得老迈、迟缓且落伍,而国内外的云计算巨头们又是如何对待这个坏孩子呢?Docker崛起,或受益于羸弱的传统PaaS服务有关“PaaS已死”的说法由来已久,既不如IaaS那样灵活自由,又不如SaaS那样可以直接推向消费者。一个似乎可以用来佐证的事实是,DotCloud作为Docker技术的缔造者,在今年年初宣布倒闭,Docker的繁荣间接地导致dotCloud在PaaS平台上的衰败。PaaS服务的羸弱在一定程度上受限于不成熟的框架和工具,导致有些PaaS解决方案让原来在IaaS上很容易实现的事变得更加复杂。一方面,企业应用环境多样化,单
一、Cron是计划任务(定时任务) 二、Cron表达式 Cron表达式是一个字符串,分为6或7个域,每个域用空格分开。Cron有如下两种语法格式: (1)SecondsMinutesHoursDayofMonthMonthDayofWeekYear (2)SecondsMinutesHoursDayofMonthMonthDayofWeek复制 corn从左到右(用空格隔开):秒分小时月份中的日期月份星期年份 三、Cron表达式常用例子: */5****?每隔5秒执行一次 0*/1***?每隔1分钟执行一次 005-15**?每天5-15点整点触发 00/3***?每三分钟触发一次 00-514**?在每天下午2点到下午2:05期间的每1分钟触发 00/514**?在每天下午2点到下午2:55期间的每5分钟触发 00/514,18**?在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 00/309-17**?朝九晚五工作时间内每半小时 0010,14,16**?每天上午10点,下午2点,4点 0012?*WED表示每个
《我和我的父辈》观后感 通过“家国”奋斗篇章按照时间线贯穿始终讲述从抗日战争到2021四个阶段父辈们奋斗的故事 《乘风》篇 吴京导的《乘风》篇战争的场景还是那么“血腥”气势磅礴,主要讲述的是一只铁骑帮忙转移老百姓为了大家牺牲了小家(自己的儿子乘风)。印象最深刻的是“吴京饰演的父亲对儿子乘风说:我就怕你不怕死”。 那个年代,上阵父子兵,枪林弹雨中舍己为国。 张天爱饰演的孕妇最后生产的一刻其实就已经猜到:乘风虽去却又乘风归来。 《父亲的诗》 这个篇章是最好哭的一章 1969年的故事背景下,漫天黄沙的环境中,也无法遮蔽中国航天人的浪漫——黄轩说:“我是个诗人,我的工作就是每天在天上写诗。” 1970年,长征一号运载火箭发射成功,将东方红一号卫星送上轨道,送入宇宙。我们国家成为世界上第五个完全依靠自己的力量成功发射人造卫星的国家,并且它的质量超过了前四个国家第一颗卫星质量的总和——这是一个在孤立无援的时代下创造的奇迹。 苦中作乐仰望星空的理想和浪漫,还有时刻可能面对危险带来的生离死别。我想,是真的唯有一个“诗”字,才能概括所有的精神和情感。就像“嫦娥”“天宫”“神舟”这些只有中国人才懂的航天
Java集合框架主要包括两种类型的容器:Collection和Map 层级结构图:evernote:///view/27699174/s49/d9aaf84e-e218-40a0-89c1-358be8e5ff8a/d9aaf84e-e218-40a0-89c1-358be8e5ff8a/ List和Set的区别 区别 List Set 是否允许重复 可重复 不可重复 null元素 可插入多个null元素 只允许插入一个null元素 容器是否有序 有序 无序 ***集合和数组的区别 数组的长度是固定的,集合的长度是可变的 数组只能存储相同数据类型的数据,数据类型可以是“基本数据类型”,也可以是“引用类型” 集合可以存储不同数据类型的数据,但是不能是“基本数据类型”【一般情况下,会使用泛型来约定只使用一种数据类型】
前言 本文主要是读书笔记的整理,自己总结的倒不多,做个记录 聚集(集合)的概念 如果能把多个普通类的对象聚在一起形成一个总体,这个总体就被称之为聚集(Aggregate),举例子: 1、在任何编程语言中:数组都是最基本的聚集,在Java中,数组也是其他的JAVA聚集对象的设计基础。 2、在Java里,JAVA聚集对象都是实现了java.util.Collection接口的对象,是JAVA对聚集概念的直接支持。从JDK1.2开始,JAVA提供了多种现成的聚集API,包括Vector、ArrayList、HashSet、HashMap、Hashtable、ConcurrentHashMap等。 自定义容器的封闭需求 假如因业务需要,RD定义了专属的数据元素的聚集,还要把它提供给客户端,让其调用(不特别强调,也包括其他依赖服务)。但是有时候为了安全,RD不想让客户端看到聚集的内部实现,只是能让她们访问就可以了,比如遍历等操作。还有的时候,客户端不需要了解具体实现,能否让客户端跳开复杂的数据结构?因为调用者们不需要了解实现方式,只要能开箱即用即可。 为了解决这个问题,那么就需要有一种策略能让客
主观概率(subjectiveprobability)的定义 合理的信念的测度 某人对特定事件会发生的可能的度量;即他相信(认为)事件将会发生的可能性大小的程度。这种相信的程度是一种信念,是主观的,但又是根据经验、各方面知识,对客观情况的了解进行分析、推理、综合判断而设定(Assignment)的,与主观臆测不同。 主观概率是对事件的一种心态或者倾向性描述。 主观概率,是指建立在过去的经验与判断的基础上,根据对未来事态发展的预测和历史统计资料的研究确定的概率。反映的只是一种主观可能性[1]。 某种情况(事件)出现的可能性大小的一种数量指标。 主观概率的准则 根据经验或者知识做出判断 根据事件的厉害关系做出判断 主观概率案例 有四个猎人,分别是:小张,小李,小明,小花。他们一早相约进山打猎。为了解决带多少弓箭进山打猎这个问题,他们对 \(A=\){今天打猎目的地没有猎物} 对这种情况发生的可能性大小做出判断。假设根据4个猎人在该猎区的打猎经验或者自信,他们给出下列判断 小张认为\(A\)发生的大小为0;-------------------意味着,\(A\)不可能发生 小李认为
转自:https://www.jianshu.com/p/122c43feee90 问题1: [root@javabin]#/usr/bin/sendemail-otls=yes-s"smtp.exmail.qq.com:465"-f"发送邮箱"-t"接收邮箱"-xu"发送邮箱"-xp"发送邮箱密码"-u"邮件标题"-m"邮件正文" 返回:ERROR=>Timeoutwhilereadingfromsmtp.exmail.qq.com:465Therewasnoresponseafter60seconds. 解决方法:将465换成587,即为/usr/bin/sendemail-otls=yes-s"smtp.exmail.qq.com:587"-f"发送邮箱"-t"接收邮箱"-xu"发送邮箱"-xp"发送邮箱密码"-u"邮件标题"-m"邮件正文" 问题2: [root@javabin]#/usr/bin/sendemail-otls=yes-s"smtp.exmail.qq.com:587"-f"发送邮箱"-t"接收邮箱"-xu"发送邮箱"-xp"发送邮箱密码"-u"邮件标题"
boolCFileOperate::lauchCAD() { //启动ZWCAD CStringOutputPath; STARTUPINFOsi;//一些必备参数设置 memset(&si,0,sizeof(STARTUPINFO)); si.cb=sizeof(STARTUPINFO); si.dwFlags=STARTF_USESHOWWINDOW; si.wShowWindow=SW_SHOWNORMAL; PROCESS_INFORMATIONpi;//必备参数设置结束 OutputPath=m_strCADPath+_T("acad.exe"); BOOLbRet=CreateProcess(NULL,OutputPath.GetBuffer(OutputPath.GetLength()),NULL,NULL,FALSE,0,NULL,NULL,&si,&pi); returnbRet; }复制 boolCheckPass() { #ifdef_NCHECK returntrue; #endif wchar_tbuffer[MAX_PATH];
JavaSE从头再来(一) 一、数组 case1数组反转 int[]array={10,20,30,40,50}; for(intmin=0,max=array.length-1;min<max;min++,max--){ inttemp=array[min]; array[min]=array[max]; array[max]=temp; } for(inti=0;i<array.length;i++){ System.out.print(array[i]+""); } 复制 case2数组作为返回参数 publicstaticint[]result(inta,intb){ intsum=a+b; intsub=a-b; intmulti=a*b; int[]result={sum,sub,multi}; returnresult; } 复制 作用:可以返回多个参数 case3数组的toString方法 System.out.println(Arrays.toString(arr)); 二、面向对象 case1成员变量的默认值 数据类型默认值基本类型整数0浮点数0
参考地址: https://www.cnblogs.com/amylis_chen/p/11320059.html 什么是JSX? JSX就是Javascript和XML结合的一种格式。React发明了JSX,利用HTML语法来创建虚拟DOM。当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析. 我为什么要在vue中用JSX? 想折腾一下呗,开玩笑.最开始是因为近期在学习react,在里面体验了一把jsx语法,发现也并没有别人说的很难受的感觉啊,于是就想尝试在vue中也试下,废话不多说,先来用代码来看下两者的区别吧. ps:vue中大部分场景是不需要用render函数的,还是用模板更简洁直观. 使用template //item.vue <template> <div> <h1v-if="id===1"> <slot></slot> </h1> <h2v-if="id===2"> <slot></slot> </h2> <h3v-if
最长上升子序列dp法 #include<bits/stdc++.h> #defineM100005 usingnamespacestd; inta[M]={0,389,207,155,300,299,170,158,65}; intdp[M]; intmain(){ intlen=1,Max=1; memset(dp,1,sizeof(dp));//初始化 for(inti=2;i<=8;i++){//dp[i]表示以i结尾的最长子序列长度 for(intj=1;j<i;++j){ if(a[j]<a[i]){//枚举前i个比a[i]小的,作为倒数第二个,a[i]为第一个 dp[i]=max(dp[i],dp[j]+1); } } Max=max(Max,dp[i]) } cout<<len; return0; } 复制 最长递减子序列 #include<bits/stdc++.h> #defineM100005 usingnamespacestd; inta[M]={0,389,207,155,300,299,17
写在前面的话 我们的数据在运算或者存储的时候,一般都是以二进制的格式存在的。但是在很多情况下,我们需要将运算结果显示到某种显示设备上,如果直接以二进制的形式来显示的话,会非常不便于我们查看。因此,我们需要首先将二进制数转换为十进制数再进行显示。二进制到十进制的转换有很多种方法。本节,梦翼师兄和大家一起学习一种国外目前最为流行的转换方法-逐步移位法。通过这种方式,我们不但可以在没有周期差的情况下实现数据格式的转换,同时我们的资源占用量也是相当小的。 基本概念 BCD码(Binary-CodedDecimal)也称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧在FPGA中经常用到,如矩阵键盘输入的数据需要在数码管上显示的时候,矩阵键盘输入的数字是二进制数,而数码管上需要显示的是十进制数,所以需要将二进制数转换成BCD码,这在我们以后的设计中会经常遇到。 7.3.3逐步移位法原理 在本设计中,我们使用逐步移位法来实现二进制数向BCD码的转换
如今电商行业的发展成熟,我们在日常生活中经常会用各种电商平台购物,但是在网上购物经常会有退货的可能性;本文作者分享了关于电商系统物流管理之逆向物流退换货流程设计,我们一起来学习一下。 什么是逆向物流,有小伙伴可能对此不太了解,那我们先来简单的介绍一下。 国内首例成功的逆向物流模式诞生于2014年,是由小狗电器与顺丰速运共同完成的。 其最初目的是为用户提供更加便利的维修服务和极致体验——在整个逆向物流过程中,用户需要先拨打客户免费服务电话报修,商家客户在收到用户报修后,通过系统下单安排物流公司到用户指定所在地上门取货,最终交寄物品通过快递公司物流送达商家客户所在地。 产品维修好之后,商家客户再通过正向物流重新将交寄物品重新送达用户手中。 一、逆向物流的概念 逆向物流(ReverseLogistics)是指,商家客户委托第三方物流公司将交寄物品从用户指定所在地送达商家客户所在地的过程。 逆向物流过程由商家客户推动,物流费用采取商家客户与第三方物流公司统一集中结算的方式。整个过程需要商家客户与物流公司双方强大的ERP对接系统支持。 逆向物流的主要思想可以概括为以下几个方面: 逆向物流过程是
1.get importrequests #最简单的get请求 r=requests.get(url) print(r.status_code) print(r.json()) #url中?key=value&key=value r=requests.get(url,params=params) #form表单 params={"username":"name","password":"passw0rd"} headers={'Content-Type':'application/x-www-form-urlencoded'} r=requests.get(url,params=params,headers=headers) #下载 r=requests.get(url) r.raise_for_status() withopen(target,'wb')asf: forchinr.iter_content(10000): result_file_size+=f.write(ch)复制 2.post请求 data={'name':'train','d
添加依赖 <?xmlversion="1.0"encoding="UTF-8"?> <projectxmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>wonder</groupId> <artifactId>skyRainbow</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</grou
偶尔见到别人的博客侧边栏有一些很有意思的flash插件,也想加入到自己博客里面,这里来大概讲一下~ 一、支持js代码 首先要在 博客设置>开启博客侧边栏公告的js代码支持,提交审核后很快就会通过,如图: 二、添加flash插件 之后我们要做的事情就很简单了,我们只需要将我们想要的flash插件代码粘贴进去,保存之后就搞定了~ 下面列举一些flash插件脚本供大家来使用: 1.人体时钟(透明背景) <scriptcharset="Shift_JIS"src="http://chabudai.sakura.ne.jp/blogparts/honehoneclock/honehone_clock_tr.js"></script>复制 效果图: 2.人体时钟(白色背景) <scriptcharset="Shift_JIS"src="http://chabudai.sakura.ne.jp/blogparts/honehoneclock/honehone_clock_wh.js"></s