- 博客(19)
- 收藏
- 关注
原创 算法与数据结构实验题 4.8 干净的序列
★实验任务 有一个长度为 n 的序列,第 i 个的数为 a[i]。我们定义如果它的一个连续的子串为“没有进行过干净的交易”,那么这个子串的最大值与最小值之差在[m,k]中。 现在,你的任务是找到一条最长的“没有进行过干净的交易”的子串。 ★数据输入 第一行输入三个正整数 n m k (0<n<=10000),m(0 =< m =< k =< n)。 接下去一行有 n 个正整数,第 i 个数表示 a[i]的值。 ★数据输出 输出一个数,表示这个子串的长度。 输入示例1 5 0 0
2021-03-17 09:13:03
431
原创 关于原神抽奖概率的简要分析
最近迷上了原神这款游戏,趁着保研完,肝了两个星期,也氪了一些金。先不谈这款游戏可玩性有多高,但论氪金强度算是我从小到大能排得上第一的了。 对于这种寸卡寸金的游戏,如何在无穷无尽的抽卡活动中,做到理性抽卡,无疑需要严谨的数学分析,才能了解大概氪多少金才能满足自己的预期。本文将对此做出一定的解答。 同时,本文对于网上一直所传的氪不改命,玄不救非之说,也将进行一定的抨击。 # -*- coding: utf-8 -*- """ import matplotlib.pyplot as plt import rand
2020-12-17 20:17:56
19287
15
原创 LeastSquare Method最小二乘法(非线性转线性)用于多项式拟合
clear all; close all; n=40; a=5; b=10; c=6; x1=10*rand(1,n)-6; x2=x1.^2; f=@(k1,k2)a*k2+b*k1+c; y=f(x1,x2)+30*(rand(1,n)-0.5); sample=[x2;x1;y]'; x_mean=mean(sample); sample=sample-x_mean; covmat=1/n*(sample'*sample); [V,D]=eig(covmat); lambda=diag(D); [m,
2020-09-17 20:29:37
501
原创 PRM
close all; clear all; %% map global obs radius obs=[22,-16; 16,-18]; radius=[15.41 15.05]; src=[30;40]; dst=[-20;-40]; %% PRM n=2000; points=zeros(2,n); points(:,1)=src; points(:,n)=dst; dis=zeros(n,n); for i=2:n-1 while true prand=rand(1,
2020-08-07 15:57:47
400
2
原创 RRT算法(sampling based motion planning)
clear all; close all; global n obstacle dst range step map=zeros(255,255); n=9; obstacle=[170 50;50 36 ;78 89;90 140;205 169;123 94;124 215;150 170;40 200]; range=round(4*rand(1,n)+14); src=round(25*rand(2,1)+1); dst=round(45*rand(2,1)+190); for i=1:n
2020-07-30 12:59:19
1484
原创 双模式人工势场法(Robotic Motion Planning)
看了网上一堆写人工势场的,跑了代码后,发现都有一个问题——高几率横穿障碍物。 自己琢磨了下,想到之前学过的神经网络辨识器。在可能发生碰撞时,仅仅获取梯度的正负信息,并加以随机性,去搜索正确的下一步路径。没想到真的效果很好。 这里要说一下,人工势场法的梯度下降,不建议采用动量梯度(即使用比率也不要太高)。在做了大量实验之后,我发现动量梯度有一定几率在终点处来回转几次,才到达终点。感兴趣的自己可以做下。 所以双模式,也就是只在遇到碰撞或局部极小点情况时,采用梯度辨识模式,以帮助robot迅速回到正轨。 下面上代
2020-07-27 02:35:28
588
1
原创 共轭梯度法
import numpy as np Q=np.matrix([[1,-0.5],[-0.5,1]]) b=np.matrix([[-1.56],[8.6]]) def F(x): global Q,b return 0.5*x.T*Q*x-x.T*b def g(x): return Q*x-b i=0 x0=np.random.rand(2,1) x=x0 d=g(x) epsilon=1e-32 print("step 0 :",x.flatten()) while i
2020-07-26 14:59:28
327
原创 01背包(一般dp实现+树形dp实现)
#include<stdio.h> #include<algorithm> using namespace std; int dp[10000][10000]; int w[10000],v[10000]; bool chosen[10000][10000]; int main() { int n,m; scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d %d",&w[i],&
2020-06-12 15:48:36
345
1
原创 分块与线段树
#include<stdio.h> #include<algorithm> #include<math.h> using namespace std; int block[1000]; int n,num,m; int val[1000000]; int size,left; bool isbound(int x) { if(x%size) { return false; } else { return true; } } void add(int l
2020-06-10 21:22:13
556
原创 matlab演奏爱尔兰画眉
tune4=0:0.0001:1; tune8_3=0:0.0001:1.5; tune8=0:0.0001:0.5; tune2=0:0.0001:2; tune2_3=0:0.0001:3; tune1=0:0.0001:4; s=@(x,y)sin(2*pi*2^(3/12)*x*y); do=440; re=440*2^(2/12); mi=440*2^(4/12); fa=440*2^(5/12); sol=440*2^(7/12); la=440*2^(9/12); xi=440*2^(11/1
2020-06-10 18:20:11
338
原创 AC自动机
通过数组构建trie树,还有一种链表构建的,下次更。 #include<stdio.h> #include<string.h> #include<algorithm> #include<queue> #include<vector> using namespace std; int trie[100000][26]; int fail[100000]; int cnt=0; const int root=0; int size[100000]; c
2020-06-10 17:19:57
174
原创 PSO算法(matlab实现)
老师布置的作业,仿照B站上的PSO教学视频,完成PSO算法。 这里是借助matlab,用PSO算法对内置的peaks函数进行了一个函数优化,并进行了粒子群的仿真。 下面是收敛动画和代码。 clc clear all %% Parameter varmax=3; varmin=-3; epoches=100; w=1; wdamp=0.99; c1=2; c2=2; cost=@(x)3*(1-x(1)).^2.*exp(-(x(1).^2) - (x(2)+1).^2) ... - 10*(x(1
2020-06-06 17:58:11
3591
1
原创 关于图论的几大算法(持续更新中)
dijstra的一般实现: #include<stdio.h> #include<vector> #include<string.h> #include<algorithm> using namespace std; typedef struct node{ int num,value; node(int num,int value):num(num),value(value){ } }node; vector<node> v[10000];
2020-06-06 17:48:26
315
原创 KM算法的真O(n^3)写法
最近研究了下KM算法求二分图的最大权匹配,网上一堆人讲slack数组可以优化KM算法到O(n3),仔细研究了下发现他们的写法和直接找min值,复杂度本质上是一样的,感觉有点画蛇添足。 看了一篇大佬的文章,找到了这个真O(n3)的写法,它通过不重复构造新的增广路径将KM算法优化到了O(n3),这里我自己实现了一遍。以下是实现代码。 大佬的链接 #include<stdio.h> #include<string.h> #include<vector> #include<
2020-06-06 04:38:55
1095
原创 自我复制机(C语言实现版)
刚看了北大刘田老师讲的递归定理,忍不住好奇心,用C语言实现了他讲的自我复制机。 其中为了模拟图灵机的可改变的输入带,我用了sprintf函数,使用字符数组input来暂时保存带上的内容,方便改变。 这里,转义字符是一个大坑,所以我用deal字符数组,来解决转义字符的问题。实际上input和deal数组里存储的内容是相同的,只是由于转义字符,两者要进行一个转换,具体见transfer函数。 最终打印...
2020-04-14 16:00:57
1124
原创 用户级线程VS系统级线程
用户级线程 import time import threading def calc(): x=1.5 for i in range(1000000): if i&1: x*=2.6 else: x/=2.6 tlist=[] for i in range(64): tlist.ap...
2020-04-14 01:38:45
659
原创 cache命中率对程序运行时间的影响真的很大吗?
这几天看到了一篇博文,叫CPU L2 缓存初探,其中作者想表达L2 cache和L3 cache存在巨大速度差,并且用go编了一段二分查找的程序,“果然”查了六倍有余。 一开始,被忽悠住了,但后来自己用C编了同样一段程序,发现不对劲,得出的结果发现并没有作者那么大的差距,甚至根据运行时间,都察觉不到cache的存在。这才发现,作者的源码有问题,原因是两个对比程序的复杂度差别巨大。 所以,今天写了这...
2020-04-14 01:09:17
937
原创 模拟退火算法(SA)
这些天疫情在家里自己看高级人工智能,写了一个模拟退火算法做函数优化的例子,防止以后忘了... 优化函数:f(x)=x4−2x3+32x2+6xf(x)=x^{4}-2x^{3}+32x^{2}+6xf(x)=x4−2x3+32x2+6x 函数图像: c++源码: #include<iostream> #include<vector> #include<cstdlib...
2020-02-24 17:16:18
610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅