自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基础图论知识总结

1. 1.最短路 何为最短路?给定两个顶点,在以这两个点为起点和终点的路径中,边的权值和最小的路径即为最短路 何为单源最短路?何为两点之间的最短路?固定一个起点,求它到其他所有点的最短路的问题,终点也固定的问题叫做两点之间的最短路问题 Bellman−Ford Bellman-Ford算法记从起点S S出发到顶点i i的最短路径为d[i] d[i],则存在下述等式 d[i]=mi

2016-08-26 10:08:42 1129

原创 基础数论知识总结

1.1.费马小定理与扩展欧几里得在乘法逆元上的运用 费马小定理aphi(n)−1≡1(modn)a^{phi(n) - 1}\equiv1\pmod n 扩展欧几里得ax≡1(modn)ax\equiv1\pmod n 乘法逆元针对bamodn\color{red}{\frac{b}{a}\mod n}这种除法取模,将它转换为乘法取模,我们需要用到之前的费马小定理和扩展欧几里得,这

2016-08-24 10:54:44 3150

原创 开源框架PhxRPC(二)之socket_stream_base

socket_stream_base.cpp文件中三个类BaseTcpStreamBuf // 跟之前继承streambuf的实现基本差不多BaseTcpStream // 只是继承了iostream,以至于可以复用>>,<<等流操作符号BaseTcpUtils // 用于操作socket的工具类,此文件中将对socket设置非阻塞等属性进行了封装本...

2018-04-28 17:17:04 497

原创 开源框架PhxRPC(一)之streambuf

提要在讲解PhxRPC的之前,介绍streambuf是必要的,本篇会带大家走一遍 steambuf继承重写流程,分别实现两套用缓冲区的流操作读入写出。一个是文件的读入写出,一个是socket网络数据的读入写出,他们之间的流操作方式会有差异,这个差异是用来提醒流操作和缓冲区半毛线关系都没有,当你实现了缓冲区。如果不把它和流绑定到一起,那么很不幸,你就只能跟操作一个对象一...

2018-04-15 20:18:43 916

原创 [Offer收割]编程练习赛33

矩阵游戏II 题解由于是整列整列的处理的,所以相当于处理一个数组,然后取相反数,排个序处理就可以了 代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <unordered_set>#include <vector>#incl

2017-11-01 16:01:59 682

原创 [Offer收割]编程练习赛30

提取用户名 题解简单的模拟题,大家懂的 代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <unordered_set>#include <vector>#include <map>#include <unordered_

2017-10-27 17:32:23 501

原创 [Offer收割]编程练习赛29

逃离迷宫4 题解题目求解(a,b)(a,b)出口,反向思维,由(a,b)(a,b)往(x,y)(x,y)推导,发现仅有一条可行路径,如果不存在就输出−1-1即可 代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <unorder

2017-10-26 14:04:21 473

原创 [Offer收割]编程练习赛28

The Next Moment 题解直接用DFS处理,时,分,秒,然后一个个的枚举,就可以了,将不符合条件的去掉,取个最小的,对于第二天的时间需要加个24∗360024*3600,这道题目做的我都尴尬了,直接%d:%d:%d竟然过不了,只有先读取字符串,然后用字符串处理才可以,也是让我刷新了对出题人的奇葩程度 代码#include <iostream>#include <cstdio>

2017-10-25 16:12:53 403

原创 [Offer收割]编程练习赛27

元素魔法 题解针对a1g(x1)+a2g(x2)+...a_1g(x_1)+a_2g(x_2)+...的求职,如果a1+a2+...=Ma_1+a_2+...=M的话,可以使用拉格朗日乘子法【此方法需要大家有高数基础,在学高数时应该学过,大概的证明思路,就是对每一个项求一次偏导,然后求极值】 然后上面可以得出一个结论: 当xix_i为一个已知值,而aia_i只和为一个已知值时,得出 su

2017-10-24 08:54:42 343

原创 [Offer收割]编程练习赛31

H星人社交网络 题解题目很简单,注意的是浮点数处理和相关的判断没写错就可以了,这种题目一般两种思路: 一个是前缀和,一个是取尺法 代码(前缀和)#include <cstdio>#include <algorithm>#include <iostream>#include <cstring>#include <cmath>using namespace std;const

2017-10-20 21:08:40 341

原创 洗牌算法的随机性(数学归纳法)

经典随机洗牌算法int s[MAXN];for(int i = 0; i < MAXN; i ++) { int k = rand() % (i + 1); if(k != i) swap(s[i], s[k]);} 证明令当前的数的个数为ZZ,序号从00开始到Z−1Z-1:当Z=1Z=1时,满足条件,概率为11\frac11设Z=KZ=K时,满足条件,每一个数出现在

2017-10-16 13:40:57 433

原创 [Offer收割]编程练习赛26

小Hi与法阵 题解按照条件求解出最大的三角形和最小的三角形,然后求重心即可。 这里求解面积有两种方法:海伦公式:p(p−a)(p−b)(p−c)−−−−−−−−−−−−−−−−−√\sqrt{p(p-a)(p-b)(p-c)},将三角形的每一条边求解出来,然后进行处理用有向向量进行计算,如果设a(x0,y0)a(x_0,y_0),b(x1,y1)b(x_1,y_1),c(x2,y2)c(

2017-10-15 12:31:35 288

原创 2018链家编程题-音乐列表(记忆化搜索DP)

题目描述  小明喜欢在火车旅行的时候用手机听音乐,他有N首歌在手机里,在整个火车途中,他可以听P首歌,所以他想产生一个播放表产生P首歌曲,这个播放表的规则是:   (1)每首歌都要至少被播放一次   (2)在两首一样的歌中间,至少有M首其他的歌 小明在想有多少种不同的播放表可以产生,那么给你N,M,P,你来算一下,输出结果取1000000007的余数 输入  输入N,M,P

2017-10-12 10:16:30 1080

原创 几何模板

```const double eps = 1e-8;int n;struct Point { double x, y; Point() {} static double c_eps(double p) { if(fabs(p) < eps) return 0; return p; } void cin(){ s

2017-07-23 15:33:52 439

原创 CSS深入之单个标签就能6翻天的特效(三)

简要说明加载特效非常常见,以前大都是些画圆圈的gif图,后来css3出来了,随着前端技术的不断发展,css3本身也衍生出各种不同的技术,用css3做一个加载特效用来取代用gif图就是一个再好不过的运用了。而问题是我们大多数人并不太会用css3的一些特性,导致有些特效即便是想出来了也无从下手,即便是到了一些特效网站下载了别人的特效,去看源码可能有些东西依旧是云里雾里。同时,针对只用一个标签就可以表现出

2017-07-20 21:42:52 445

原创 CodeForces - 786B Legacy(线段树 +最短路+思维好题)

Legacy(传送门) 题意给定nn颗行星,qq次处理,地球位置为ss,求解在qq次处理后,地球到每一颗行星的位置。其中qq有三种不同的操作:输入v,u,wv,u,w,构建一条从vv到uu的代价为ww的路线输入u,l,r,wu, l, r, w,构建一条从uu到区间[l,r][l,r]中任意一颗行星的代价为ww的路线输入u,l,r,wu, l, r, w,构建区间[l,r]中任意一颗行星

2017-07-20 07:38:44 1696

原创 51nod - 1287 加农炮(线段树)

1287 加农炮(传送门) 题意中文不解释 解题思路看完这道题目最暴力的方法和思路,就是寻找从左到右第一个大于等于指定子弹高度的地形高度,时间复杂度O(n2)O(n^2)。接下来优化就是针对区间了,打个比方如果Max[i]表示[1,i][1 , i]这个区间的最大值,那么我们针对一个子弹高度h要处理的就是最靠近左边的h <= Max[i],那么子弹落下的位置为i - 1。也就是我们最终的

2017-07-14 22:39:44 442

原创 CSS深入之padding应用相关实现(二)

1.正方形自适应 代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <style> *{margin:0;padding:0;} #parent{width:90%;height:200px;background

2017-07-10 10:10:11 402

原创 小白天堂之编写词法语法分析器何其简单(一)

写小白天堂系列的文章算是从这一篇开始吧,但是写这个词法语法分析器实在是因为编译原理老师扣啊,哎,没办法,只能直接写代码,当时正好将Javascript的语法基本撸了一边,所以就决定写一个JS的词法语法分析器,嗯,当然这个写哪种编程语法的分析器都一样,最多是在词法分析器中有点区别,他们的语法分析器几乎都是一样的,构造First集,Follow集,然后就是构建出预测分析表M基本就OK了,如果你还想增加S

2017-05-12 22:51:40 3061

原创 Period UVALive - 3026(KMP)

Period(传送门) 题意给定字符串,找到每个前缀的最大循环节的个数,即循环周期,如果大于1的话就输出下标和周期数(循环节) 解题思路KMP就可以非常轻松的解决问题,首先提到一个next数组的性质,对于当前的前缀a[j],如果j % (j - next[j]) == 0则j - next[j]即为最小周期长度,而周期数就是j / (j - next[i]),至于为什么j - next[

2017-05-04 23:48:46 611

原创 2017湖南多校第八场-20170429

C(1908): The Big Escape(传送门) 题意有一棵树,除了根节点,其他每个节点都有一个人,大家都要到根节点去,每条边每分钟只能有一个人通过。问最后到达的人的时间 解题思路对于root的每棵子树互不相关在一棵子树中,每一秒最多只能有一个人逃出去,所以不管是哪一个子树他们每一秒只会有一个人从子树的顶点出来,所以直接求解所有子树大小的最大值就是最终答案 代码#includ

2017-05-02 00:08:38 696

原创 数据结构之平衡二叉树

平衡二叉树是精华版的二叉排序树,但是将一个完整的二叉排序树直接转换为平衡二叉树代价并不小,因为你是将一个已经构造完成的二叉排序树转换为平衡二叉树,这里需要区分的,很多博客讲平衡二叉树时候都说是将二叉排序树转换为平衡二叉树,其实不然。因为那只是我们构造平衡二叉树的过程,而不能说成是二叉排序树转换为平衡二叉树,因为平衡二叉树拥有二叉平衡树的性质,打个最简单的比方:我们将一颗二叉树建立成为二叉排序树,难道

2017-04-28 21:28:58 1039

原创 CSS深入之其实你可能根本不认识margin和padding(一)

1.我们来解析官方的margin是怎么个说法margin属性可以为给定元素设置所有四个(上下左右)方向的外边距属性。四个外边距属性设置分别是: margin-top, margin-right, margin-bottom 和 margin-left 。指定的外边距允许为负数。 初始值每一个都是0 使用的范围包括所有的元素,但是对于table内中display类型为table-capti

2017-04-17 08:55:29 3142

原创 JS深入之你知道点号(.)是怎么玩的吗?(二)

经过我多年的开发经验和牛逼的思维方式,终于可以来说说点号这王八犊子这些年到底都做了什么亏心的事 —扯淡新记。作为一个半标准的前端码农,我深刻的意识到,JavaScript全程都在耍我们,就这个点号就能够让你一直懵逼,这种词法文法,和语法实在是让人嘴角莫名地一抽,说好的简单呢。果然,入门确实简单,直接套Java或者C,C++的语法,然后改几个保留字,稍微瞄一下它的语法,OK!,入门啦,然而,只想说,你

2017-04-12 19:04:28 4374

原创 HTML深入之script异步也矫情(二)

我们在MDN官方上面看到了script具备两个有意思的属性:async,defer,其中defer兼容性还不如async,IE10以上都支持async,defer,Opera15以上都支持async,defer,Opera15好像现在暂时不支持。我们用HTML深入(一)的TimeLine来试一试,也是HTML深入(一)的代码。 当我们不用这两个属性会是怎样的呢?我们在深入(一)就讲过,蓝色是HTM

2017-04-11 16:13:05 875

原创 HTML深入之打开个网页它到底干了什么(一)

所有我们随意的给一个非常简单的网页,基本构造如下: 然后我们运行在chrome中打开它,然后调出控制台,选择我们的Timeline项(它显示会有几种颜色,这里先提一下,蓝色表示HTML解析,黄色表示会触发或者是运行了javascript,紫色表示渲染,绿色表示绘制,其实Timeline项中也对这个进行了说明,希望大家可以学会使用Timeline去进行一些性能优化的工作),然后就会看到如下图:然后我

2017-04-11 13:39:28 1075 2

原创 JS深入之趣味比较隐式转换(一)

这一部分讲述的是堆栈调解器的实现React的API可以被分为三部分,核心,渲染器,调解器,如果你对代码库可能有点不了解的话,可以看我的博客其中堆栈调解器是React产品中最重要的部分,被React DOM和React Native渲染器共同使用,它的代码地址src/renderers/shared/stack/reconciler。1.从零开始构建React的历史Paul O'Shannessy给予

2017-04-10 22:40:42 2359

原创 Webpack学习之你该更新了从V1到V2(三)

这部分没有接触Webpack1.x的读者可以跳过(减号代表不用,+代表新增)resolve.root, resolve.fallback, resolve.modulesDirectories这些选项取而代之的是一个配置项resolve.modules。 resolve: {- root: path.join(__dirname, "src")+ modules: [+ pat

2017-04-07 11:00:49 2317

原创 Webpack学习之亲,安装一下(二)

1.安装的前提条件你的需要有一个最新版本的Nodejs的环境支持,而且这个Node.js是属于长期稳定的版本。2.本地安装npm install webpack --save-devnpm install webpack@<version> --save-dev如果你是在您的项目中使用npm脚本,npm将试图寻找安装在本地模块的webpack,同时检测出安装技术是有用的。"scripts": {

2017-04-06 22:17:50 731

原创 Webpack学习之哥们入个门呗(一)

Webpack是一个在你的应用中建立模块化的JavaScript工具,我们需要从CLI(Command Line Interface)命令行接口和API中去学会使用它,它可以简化我们的工作流程,并且以正确的顺序快速构建应用程序的依赖图和捆绑它们。Webpack可以通过配置来定制优化你的代码,去合理的分离我们的css/js代码,无需再次刷新页面就可以在开发服务器运行一个程序的代码以及其他许多这样的冷却

2017-04-06 21:55:15 1286

原创 React学习之相关堆栈调解器的实现(三十七)

这一部分讲述的是堆栈调解器的实现React的API可以被分为三部分,核心,渲染器,调解器,如果你对代码库可能有点不了解的话,可以看我的博客其中堆栈调解器是React产品中最重要的部分,被React DOM和React Native渲染器共同使用,它的代码地址src/renderers/shared/stack/reconciler。1.从零开始构建React的历史Paul O'Shannessy给予

2017-04-06 12:46:34 1474

原创 React学习之相关代码库(三十六)

本章将讲述React代码库的组织,约定,和它的实现方式。如果你想更加关注React,或者说作为开发贡献者,对React进行一些修改,这篇博客或许可以帮到你。当然,我们没必要去过度的关注React应用的约定,因为其中有很多是历史遗留问题,后续版本可能会被pass掉。1.自定义模板系统在Facebook,他们内部人员使用了一个叫做Haste的自定义模板系统,这个系统非常类似CommonJS规范,也使用r

2017-04-03 18:56:35 850

原创 React学习之扩展LinkedStateMixin双向绑定(三十五)

紧急事件提示这玩意已经被React v15给抛弃了,请直接用数据设置和函数处理。 引用import LinkedStateMixin from 'react-addons-linked-state-mixin' // ES6var LinkedStateMixin = require('react-addons-linked-state-mixin') // ES5 with npmva

2017-04-02 12:18:44 2175

原创 React学习之扩展浅比较(三十四)

注意这玩意也已经被React.PureComponent的功能取代了,这里依旧是提一下(主要是React.v15的版本中的react-with-addons.js,这些玩意还存在,哎,害人呐) 引入import shallowCompare from 'react-addons-shallow-compare' // ES6var shallowCompare = require('rea

2017-04-02 10:00:01 2784

原创 React学习之扩展PureRenderMixin(三十三)

PureRenderMixin的出现早于React.PureComponent,该插件属于历史保留,现在就使用React.PureComponent吧,这里也就提一下如果你的React组件的渲染函数是一个纯函数也就是说对于相同的值返回一样的结果同时不影响元素局,在某些场景下,你可以利用这个插件来极大地提升性能。var PureRenderMixin = require('react-addons-p

2017-04-02 09:42:45 3425

原创 React学习之扩展不变的数据(immutability-helper)优化(三十二)

注意此插件是一个被遗留的插件,如今好像更新为这个地址:https://github.com/kolodny/immutability-helper 引入import update from 'react-addons-update'; // ES6var update = require('react-addons-update'); // ES5 with npmvar update

2017-04-01 21:31:24 4639 2

原创 React学习之扩展键片段(三十一)

import createFragment from 'react-addons-create-fragment' // ES6var createFragment = require('react-addons-create-fragment') // ES5 with npmvar createFragment = React.addons.createFragment; // ES5 wi

2017-04-01 12:52:40 769

原创 React学习之扩展动画(三十)

React为动画提供一个ReactTransitonGroup插件组件作为一个底层的动画API,一个ReactCSSTransitionGroup来简单地实现基本的CSS动画和过渡。1.高级组件:ReactCSSTransitionGroup(CSS渐变组)ReactCSSTransitionGroup是基于ReactTransitionGroup的,在React组件进入或者离开DOM的时候进行相关

2017-03-31 19:46:37 2085

原创 React学习之扩展Test工具(二十九)

套路走起import ReactTestUtils from 'react-addons-test-utils' // ES6var ReactTestUtils = require('react-addons-test-utils') // ES5 with npmvar ReactTestUtils = React.addons.TestUtils; // ES5 with react-w

2017-03-31 00:19:09 1578

原创 React学习之扩展性能分析工具-Perf(二十八)

import Perf from 'react-addons-perf' // ES6语法var Perf = require('react-addons-perf') // ES5语法针对nodejsvar Perf = React.addons.Perf; // ES5语法,针对浏览器,增加react-with-addons.js在script标签中1.概要React本身就非常快速了,然而,

2017-03-29 21:46:45 5420

空空如也

空空如也

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

TA关注的人

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