【算法笔记--三分查找】教程文章相关的互联网学习教程文章

算法笔记2

分治法:是将待求解的原问题划分成若干个相互独立的子问题,通过求解子问题并将子问题的解合并,自底向上逐步求出原问题的解。 动态规划法:是将待求解问题分解成若干个相互重叠的子问题,每个子问题对应决策过程的一个阶段,一般来说,子问题的重叠关系表现在对给定问题求解的递推关系(也就是动态规划函数)中,将子问题的解求解一次并填入表中,当需要再次求解此子问题时,可以通过查表获得该子问题的解而不用再次求解,从而...

《算法笔记》啃不动了,刁瑞、谢妍版

《算法笔记》啃不动了,刁瑞、谢妍版的,短小精悍,但是没有数学基础及算法思想基础,读起来真像是天书。前面的排序算法花了好大力气,查来查去,还算搞懂了。从哈希开始,就完全不懂了,思想介绍简洁,推理公式也是简单的总结,哎呀真是看不懂。打算还是先跟着深度之眼打卡基础看看,后面有机会再借来看吧。 无奈,还书吧。。。。。。

SSD系列算法原理讲解----(3)DSSD、DSOD算法(笔记)【图】

SSD系列算法优化及扩展对于SSD,通常的优化策略,主要强调对主干网络的改进,和后续预测网络的改进(优化输入的feature map)。 DSSD:2017年的CVPR,WeiLiu SSD算法对小目标不够鲁棒的最主要的原因是浅层feature map的表征能力不够强加入上下文信息 更好的基础网络(ResNet)和Deconvolution层,skip连接来给浅层feature map更好的表征能力反卷积结合之前的feature map通过相加来完成。由图可看出引入反卷积。通过反卷积可以提出更...

OpenSSL密码库算法笔记——第6.3.5章 验证原理【图】

签名验证过程分成两步:计算信息摘要和验证签名,计算信息摘要利用散列函数(如SHA-1,参见[15])求出消息M的散列值e = H(M),然后对这个散列值e和接收到的签名(r,s)进行签名验证。 算法描述如下: ─────────────────────────────────────── 算法 签名验证 输入: 接收到的消息M、签名(r,s)、椭圆曲线参数,签名者的公钥Q。 输出: 签名有效或者是签名无效。 步骤: ...

OpenSSL密码库算法笔记——第6.3.6章 验证函数调用关系【图】

和计算签名相比,验证签名所涉及的函数少了许多,只有三个函数:ECDSA_verify、ECDSA_do_verify和ecdsa_do_verify。这其中只有ECDSA_verify的签名采用DER编码。下图将简要说明这些函数之间的调用关系。 图6.5 验证所用函数图现对上图做个简要说明: ECDSA_verify的签名采用的是DER编码,故需要用d2i_ECDSA_SIG先将签名从DER形式解码成ECDSA_SIG格式,然后才调用ECDSA_do_verify。 ecs_ossl.c文件中的ecdsa_do_verify是具体实现验证...

OpenSSL密码库算法笔记——第6.3.7章 验证函数说明

接下来详细介绍各个验证函数。 ─────────────────────────────────────── int ECDSA_verify(int type, const unsigned char *dgst, int dgstlen, const unsigned char *sig, int siglen, EC_KEY *eckey) 功能: 验证签名 输入: type【无用】,dgst【签名前的hash值】,dgstlen【hash值长度】,eckey【密钥】, sig 【DER编码格式的签名】,siglen 【签名长度】 输出: - 返回...

【算法笔记】B1057 数零壹【代码】

思路:步骤1:把大写字母改成小写字母;步骤2:把每个字母的序号加到sum里得到序号和;步骤3:序号和换算成二进制,保存到数组里,统计0和1的个数。 code 1 #include<bits/stdc++.h>2 using namespace std;3 vector<int> binary;4 int main(){5 int sum = 0;6 string str;7 getline(cin, str);8 int len = str.length();9 for(int i = 0; i < len; i++){ 10 if(str[i]>=A&&str[i]<=Z) str[i] += 32; 1...

【算法笔记】B1055 集体照【代码】

思路:对输入的姓名身高按降序排序,然后调整每排的站位并输出,调整站位的时候先确定中心再调整一边比较容易实现。#include<bits/stdc++.h> using namespace std; const int maxn = 10010; struct student{string name;int height; }; int cmp(student a, student b) {return a.height != b.height ? a.height > b.height : a.name < b.name; } int main(){int n, k, m;cin>>n>>k;vector<student> stu(n);for(int i = 0; i < n; i...

排序算法笔记(C++版)【代码】

排序算法笔记(C++版) 记录最近学习的排序算法 1.冒泡排序 时间复杂度:O(n)[最好],O(n2)[平均],O(n2)[最差] 空间复杂度:O(1) 代码: #include<iostream> #include<windows.h>//计时用 using namespace std;//冒泡排序算法 void bubbleSort(int data[], int n) {//打印原始数据信息cout << "\n 待排序数据为:";for (int i = 0; i < n; i++) cout << data[i] << " ";//算法计时LARGE_INTEGER nFreq, t1, t2;double dt;QueryPe...

【算法笔记】动态规划——走棋盘【代码】【图】

题目描述 一个棋盘有n行m列,从棋盘的左上角走到右下角,每次只能往右走一步,或者往下走一步,总共有多少种走法?Input: m = 3, n = 2 Output: 3 总共有三种走法 1.右 -> 右 -> 下 2.右 -> 下 -> 右 3.下 -> 右 -> 右解题思路 假设将某个格子作为终点,该格子位于第iii行第jjj列,走法总数 = 终点上方格子的走法总数 + 终点左边格子的走法总数。原问题的解包含子问题的解,符合最优子结构的定义,典型的动态规划问题。 写成方程:...

【算法笔记】B1053 住房空置率【代码】

看了半天发现是题目理解错了,可能空置的里面观察期超过D则判定空置,而不是用电量低于e的天数超过D。 code 1 #include <bits/stdc++.h>2 using namespace std;3 4 int main(){5 int n, d, p_empty = 0, empty = 0;6 double e, use;7 cin>>n>>e>>d;8 int days[n];9 for(int i = 0; i < n; i++){ 10 int day = 0; 11 cin>>days[i]; 12 for(int j = 0; j < days[i]; j++){ 13 ...

强化学习经典算法笔记(零):贝尔曼方程的推导

强化学习经典算法笔记——推导贝尔曼方程 ??在写强化学习经典算法笔记(一):价值迭代算法Value Iteration和强化学习经典算法笔记(二):策略迭代算法Policy Iteration的时候,感觉关键的部分——为什么要这样进行值(策略)迭代,没有讲清楚,概念有点模糊,所以感觉有必要重新关注一下Bellman Equation的来龙去脉,也是加强自己对这一块内容的理解。 相关概念 ??在介绍贝尔曼方程之前,必须对几个概念有所了解,下面我们一一介绍。...

BFS——《算法笔记》8.2小节 问题 A: Jugs【图】

首先,我的代码过了样例,但OJ上并没有过(只过了50%),并且神奇的是该题提交记录里没一个人过的(不知道是不是题目的问题) 下面是我的代码,用BFS解决,找出最优路径:#include<iostream> #include<queue> #include<string> #include<string.h> using namespace std; struct node {int a, b;int ope; }; string op[6] = {"fill A","fill B","empty A","empty B","pour A B","pour B A"}; int v_a, v_b, goal; int vis[1050][1050...

【算法笔记】B1051 复数乘法【代码】【图】

题目链接:https://pintia.cn/problem-sets/994805260223102976/problems/994805274496319488 思路: 难点在于对复数其他形式的认识。两个复数相乘,积的模等于各复数的模的积,积的辐角等于各辐角的和。code:#include <bits/stdc++.h> using namespace std;int main(){double r1, p1, r2, p2, r, p;cin>>r1>>p1>>r2>>p2;r = r1 * r2 * cos(p1 + p2);p = r1 * r2 * sin(p1 + p2);if (r > -0.005&&r < 0)r = 0;if (p >= 0)printf("...

算法笔记_codeup1934(找x)

我的解法:(注意此处为多组数据,即多点测试) #include <bits/stdc++.h>using namespace std;int main(){ int n; while(scanf("%d",&n) != EOF){ int arr[n]; for(int i = 0; i < n; i++){ cin >> arr[i]; } int findnum; scanf("%d", &findnum); int i; for(i = 0; i < n; i++){ if(arr[i] == findnum){ printf("%d", i); ...