算法

硬核图书系列:《漫画算法:小灰的算法之旅》

£可爱£侵袭症+ 提交于 2020-02-04 15:03:02
小编说 : 疫情像施了魔法一样,改变了我们每个人春节的轨迹。时间则从永远不够用突然变成了多得似乎不知干什么用。博文菌希望疫情没有改变我们那颗求知若渴的心。 人与人的差距也可能就在这个不知何时结束的假期中拉开了。小伙伴们加油! ___ 许多人认为学习编程就是学习最新的编程语言、技术和框架, 其实计算机算法更重要 。算法是编程的核心,就像一台计算机的CPU,算法的好坏决定了一个系统的效率高低。 每一位互联网技术人都逃不开算法,但是其枯燥乏味的表象足以锤爆一众初学者。即便是那些网传的“圣经宝典”,你若想心情愉悦地啃下来,那自然是不可能的,尤其是那些动不动就七八百页的“砖著”,不收了你半条小命就别想走出去! 那博文菌今天给你推荐一本,不仅能帮你擦掉泪痕与皱纹,还能轻轻松松把算法学懂的灵药——《漫画算法:小灰的算法之旅》 这本书,博文菌已经推荐过无数次了,但还是忍不住要大喊一句—— 这书真的是太太太优秀了! 本书用漫画 故事的形式,给算法这颗“炮弹”包上“糖衣”! 轻松愉悦间把算法给你整得明明白白儿的! 在这里没有干巴巴的长篇大论, 你也不会被复杂原理按在地上摩擦, 算法知识就像长了翅膀一样,嗖嗖嗖地直往脑子里飞! 喔,这何止是无痛,简直比嗑糖还过瘾呐! 漫画算法:小灰的算法之旅(全彩)(限量签名 随机发售)作者:魏梦舒(@程序员小灰) 有些可爱的小老弟可能觉得算法就是套路

最短路径算法

孤街浪徒 提交于 2020-02-04 14:23:07
各个算法的比较 Bellman-Ford 强调边与边的问题,能够解决负权边问题 基本操作,实现某顶点到所有顶点的最小距离 输入样例 5 5 //分别代表边的条数与顶点的个数 2 3 2 //分别代表两顶点和两顶点对应边的权值 1 2 -3 1 5 5 4 5 2 3 4 3 结果: 0 -3 -1 2 4 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> using namespace std; int p = 99999; int dis[10100];//定义数组dis[i],代表某点到顶点i的最小距离 int main() { int n, t, m; cin >> n >> t; int u[100], v[100], w[100]; for (int i = 1; i <= n; i++) { cin >> u[i] >> v[i] >> w[i]; } for (int i = 1; i <= t; i++) dis[i] = p; dis[1] = 0;//dis[1]=0,代表某顶点到1的距离为0,可知此顶点为顶点1 /*核心代码*/ for (int i = 1; i < n; i++)//循环n-1条边 { for (int j = 1; j <= t; j++)

35、标准模板类(STL)(一),综述、容器及其操作

风流意气都作罢 提交于 2020-02-04 14:16:01
C++的 STL 是一个功能强大的库,它是建立在模板机制上,能够满足用户对存储管理不同类型数据的通用容器和施加在这些容器上的通用算法的巨大需求,并且具有完全的可移植性。因此在寻求程序的解决方案时,应该首先在 STL 中寻求恰当的容器和算法。 STL 是一个通用性极高的编程工具,这种通用性不仅表现在可以使用通用的容器存储和管理任意类型的数据,更重要的是可以对不同的容器施加统一通用的算法和操作。实现这种通用性的关键思想就是:通过引进一个间接层对象对不同结构的数据容器进行统一的访问操作,从而简化了对容器的操作,使得实现操作的算法和函数通用化。这种思想是 STL 的设计原则之一,也是软件设计中一个重要设计思想。 在 STL 中对容器访问的简化和独立就是通过循环子实现的,循环子可以无须依据某种特定容器的数据结构而完成对容器元素的访问,从而使得数据的存储结构与施加于数据的操作相互独立。标准模板库 STL 是由容器类模板,用于访问这些容器的循环子类模板和可以通过循环子在这些容器上实现的各种算法类模板以及函数类模板组成的。STL 为这种标准算法和函数(包括用户定义的函数)借助循环子在容器上实现的应用建立了统一的规则。 容器:可容纳各种数据类型的数据结构。 迭代器:可依次存取容器中元素的东西,连接容器和算法 算法:用来操作容器中的元素的函数模板。例如,STL用sort(

看电视(贪心算法)

≯℡__Kan透↙ 提交于 2020-02-04 13:07:27
问题 A: 看电视 时间限制: 1 Sec 内存限制: 32 MB 提交: 927 解决: 432 [ 提交 ][ 状态 ][ 讨论版 ][命题人: 外部导入] 题目描述 暑假到了,小明终于可以开心的看电视了。但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目。 现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗? 输入 输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示小明喜欢的节目的总数。 接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。 当n=0时,输入结束。 输出 对于每组输入,输出能完整看到的电视节目的个数。 样例输入 12 1 3 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 5 10 4 14 2 9 0 样例输出 5code: /*算法:使用贪心算法,时间按照开始时间从小到大的顺序排列, *如果开始时间相同,那么按照结束时间从小到大的顺序排列。之 *后使用lastTV保留上一个最优解,如果下一个区间的开始时间大 *于lastTV的结束时间,那么更新lastTV,直至所有区间被遍历完 */ #include <iostream> #include <algorithm> /*节目结构*/ struct program

负载均衡算法简单归纳

北城余情 提交于 2020-02-04 12:23:06
1简单轮询 2随机算法 3源地址哈希法 4加权轮询法:在简单轮训的基础上加上权重(返回一个由此算法得来的列表进行轮训) 5加权随机法: 6最小连接法:轮询服务器列表,返回连接数量最少的 Ribbon 客户端负载均衡:客户端会有一个服务器地址列表,在发送请求前通过负载均衡选择一个服务器(所有客户端节点都有一份从注册中心获得的负载均衡后的服务器列表) 微服务中RPC远程调用实现本地服务负载均衡 例如dubbo springcloud feign在ribbon上进行封装 nginx 服务器端负载均衡:针对服务器例如jetty tomcat 来源: CSDN 作者: javHao 链接: https://blog.csdn.net/weixin_40695328/article/details/104165672

尺取算法 入门+模板+例题

半城伤御伤魂 提交于 2020-02-04 12:22:09
尺取算法 入门+模板+例题 博客推荐 尺取法原理及模板 https://blog.csdn.net/doubleguy/article/details/81265327 一些入门例题 https://blog.csdn.net/lxt_Lucia/article/details/81091597 模板 这里根据题目 POJ 3061 来具体实现。 题意是说给你一个有数字组成的序列,找出最短的子串(注意:子串是连续的,子序列可以不连续),使得这个子串的和大于等于 S ,求子串的长度。 思路 :使用尺取法来解决。 #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> #include<stack> #include<queue> #include<map> typedef long long ll; using namespace std; const double esp=1e-6; const int inf=0x3f3f3f3f; const int MAXN=1E5+7; int num[MAXN], n, s; int main() { int t=0; scanf("%d",&t); while(t--) {

机器学习 降维算法: isomap & MDS

空扰寡人 提交于 2020-02-04 12:00:26
  最近在看论文的时候看到论文中使用isomap算法把3D的人脸project到一个2D的image上。提到降维,我的第一反应就是PCA,然而PCA是典型的线性降维,无法较好的对非线性结构降维。ISOMAP是‘流形学习’中的一个经典算法,流形学习贡献了很多降维算法,其中一些与很多机器学习算法也有结合,先粗糙的介绍一下’流形学习‘。    流形学习   流形学习应该算是个大课题了,它的基本思想就是在高维空间中发现低维结构。比如这个图:      这些点都处于一个三维空间里,但我们人一看就知道它像一块卷起来的布,图中圈出来的两个点更合理的距离是A中蓝色实线标注的距离,而不是两个点之间的欧式距离(A中蓝色虚线)。   此时如果你要用PCA降维的话,它根本无法发现这样卷曲的结构(因为PCA是典型的线性降维,而图示的结构显然是非线性的),最后的降维结果就会一团乱麻,没法很好的反映点之间的关系。而流形学习在这样的场景就会有很好的效果。    经典MDS(Multidimensional Scaling)   如上文所述,MDS接收的输入是一个距离矩阵DD,我们把一些点画在坐标系里:      如果只告诉一个人这些点之间的距离(假设是欧氏距离),他会丢失那些信息呢?   a.我们对点做平移,点之间的距离是不变的。   b.我们对点做旋转、翻转,点之间的距离是不变的。  

这是一篇有温度的NLP秋招面经

那年仲夏 提交于 2020-02-04 11:30:16
一、前言 往昔的回忆使我们激动,我们重新踏上旧日的路,一切过去日子的感情,又逐渐活在我们的心里;使我们再次心紧的是,曾经熟悉的震颤;为了回忆中的忧伤,真想吐出一声长叹……感谢一路上曾经鼓励、帮助过我的人。愿我们在彼此追梦的道路上,一直走下去。 二、选择有时候比努力重要 2016年,那个炎热的夏天,拿着手里的保研名额,以及清北华五的录取意向,我最终选择来到了目前所在的地方 —— 北京某双非院校。 就目前来看,我当时确实做了一个不怎么正确的决定,我并没有任何诋毁我院的意思(我们这一届仍然有非常多实力强大的大佬),只是可能不适合我,或者理想与现实的差距使我有一种深深的懊恼。 整个实验室,方向是偏安全的,当时懵懵懂懂的我幻想着的是黑客帝国的名场面,以及传言中吴瀚清大佬几分钟黑进阿里系统的画面,但做了一段时间后...good game,well play(好像 知道乔碧罗真面目后 的榜一,心态炸裂) 没有海量数据交互,我接触不到真正的高并发; 没有算法底蕴,我也没办法从事自己喜欢的研究; 我甚至被派去某不知名小公司做了2个月的外包,只为完成实验室当时即将要交付的任务,因为路途遥远,买了折叠床睡在公司,7、8月份酷热的北京而我只能一周洗两次澡... 我曾不止一次萌生过退学的念头,要不是组里的师兄真的非常好,要不是组里的逗比同学也足够欢乐,我可能早就坚持不下去了。 有时候,在黑暗的环境中

从原理到落地,七大维度读懂协同过滤推荐算法

感情迁移 提交于 2020-02-04 11:16:54
转载 AI科技大本营 最后发布于2019-08-09 19:52:18 阅读数 195 收藏 展开 作者丨gongyouliu 来源 | 大数据与人工智能 导语:本文会从协同过滤思想简介、协同过滤算法原理介绍、离线协同过滤算法的工程实现、近实时协同过滤算法的工程实现、协同过滤算法应用场景、协同过滤算法的优缺点、协同过滤算法落地需要关注的几个问题等7个方面来讲述。希望读者读完本文,可以很好地理解协同过滤的思路、算法原理、工程实现方案,并且具备基于本文的思路自己独立实现一个在真实业务场景中可用的协同过滤推荐系统的能力。 作者在《 推荐系统产品与算法概述 》这篇文章中简单介绍了协同过滤算法。协同过滤算法是在整个推荐系统发展史上比较出名的算法,具备举足轻重的地位,甚至在当今还在大量使用。本篇文章作者会详细讲解协同过滤推荐算法的方方面面,这里所讲的也是作者基于多年推荐系统研究及工程实践经验的基础上总结而成,希望对大家学习协同过滤推荐算法有所帮助,提供一些借鉴。在正式讲解之前,先做一个简单定义。本文用“ 操作过” 这个词来表示用户对标的物的各种操作行为,包括浏览、点击、播放、收藏、评论、点赞、转发、评分等等。 一、协同过滤思想简介 协同过滤,从字面上理解,包括协同和过滤两个操作。所谓协同就是利用群体的行为来做决策(推荐),生物上有协同进化的说法,通过协同的作用,让群体逐步进化到更佳的状态

0909 粗浅的认识编译原理

99封情书 提交于 2020-02-04 09:58:59
经过相关网页的浏览,也看到了各大网站中各方牛人的回答,我似乎对编译原理有了自己一点粗浅的认识。首先,编译原理及技术从根本上来讲就是对算法问题进行求解,这个问题十分复杂,更不用说其解决算法。 而本学期开的算法分析与上学期学习的数据结构也是讲算法的,不过讲的是基础算法,而编译原理这门课程讲的就是比较专注解决一种的算法。它所包含的内容包括语言和文法、词法分析、语法分析、语法制导翻译、中间代码生成、存储管理、代码优化和目标代码生成等这几大类,要学好是相当的困难,需要倾注自己的苦心与耐心。   学习编译原理可以更好的去理解代码背后的东西,对自己所写的程序、程序语言都会有更深的本质认识,若果拥有这样的认识,自身肯定可以企及更高的高度,我想别人看到的是语法,我看到的,是背后的实现部分。如此一来,拥有对代码更加通透的理解,对以后的代码编写工作具有相当的帮助。 对于编译原理的学习,作为一个初学者,几乎对书籍都不了解,更不用说如何去通过自己的努力写出一个可以正常使用的编译器,网上说的“龙书”、“虎书”、“鲸书”,三本编译原理中的圣经,完全找不到去看的动力,希望接下来的课程能够激发我的求知欲,那样子,什么书都啃的下。总而言之,兴趣是最好的老师,也是最好的学习方式,有了它,何尝不会自己百度、买书,深入钻研! 而说到自己编写编译器,我越想越不明白到底应该如何编写,还有用何种语言去入手,没有自己的一个思路