自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 libevent学习笔记

libevent学习笔记学习资料:链接:百度网盘提取码:jqsp包括libevent源码剖析,参考手册另外推荐一个网站:学习网站libevent工作结构libevent是高性能i/o网路库,基于reactor事件驱动模型。下面这张图直观地展示了libevent的工作模式。这是Reactor模式的几个必备组件,事件源(Handle),Reactor框架,事件多路分发器(Event Demultiplexer),事件处理器(Event Handle),具体的事件处理器(Concrete Eve

2020-06-14 00:09:46 415

原创 Vim代码高亮补全插件配置总结

Vim代码高亮补全插件配置总结云服务器上没装desktop,迫不得已配置一下vim的代码高亮,看着舒服很多。参考博客:https://www.cnblogs.com/write-hua/p/7697762.html ,代码高亮,括号等补全的基本配置https://zhuanlan.zhihu.com/p/54074345 ,YouComleteMe,代码自动补全插件如果需要安装其他插件,看第二个博客作者的另一篇文章:https://zhuanlan.zhihu.com/p/54071071配置文

2020-05-16 17:12:39 3295

原创 半同步/半反应堆线程池实现简单web服务器

半同步/半反应堆线程池实现简单web服务器,解析http请求此篇为《linux高性能服务器编程》第15章线程池实例的学习笔记。半同步/半反应堆线程池模型与进程池模型类似,不过需要考虑使用请求队列,互斥锁来同步线程之间的工作。locker.h首先,locker.h文件实现了NPTL线程的三种同步机制的封装。将其封装成对象,便于管理。#pragma once/* 此文件是对三种线程同步机...

2020-05-04 00:21:35 591

原创 简易的负载均衡服务器——springsnail

简易的负载均衡服务器——springsnail《linux高性能服务器编程》作者开源的一款简易负载均衡服务器,整个项目代码1400多行,短小精悍,适合初学者学习与模仿。该项目能从所有逻辑服务器中选取负荷最小的一台来处理新的客户连接,并且使用了进程池,有限状态机,高效数据结构和统一事件源等书中提及的思路优化其性能,同时还细致地封装了每个函数和模块,使之更像一个完整的实际服务器项目。参考博客:...

2020-05-03 18:03:31 1716 3

原创 状压dp水题练习

状压dp水题练习吉比特笔试第二题(状压dp)题目大意:给定一个长度为n(n<=15)的数字,每一位为1~9中的一个数字,现在你可以将整个数字进行全排列打乱,问你新组成的数字中有多少个数字是m的倍数?(m<=50)比如,S=123,总共有6种排列:123,132,213,231,312,321,其中为m=6的倍数有2个:132,312sample input12...

2020-04-13 12:26:05 254

原创 牛客OI周赛15-普及组部分题解

链接:https://ac.nowcoder.com/acm/contest/4911B.三角形题目大意:给定n个盒子,每个盒子中有一定数量的宝物,现在你每次可以从一个盒子中拿取一个宝物,这样就会有很多种不同的价值和结果。现在问你前k小的价值结果的和是多少?n<=100,k<=10000,假设盒子中最多宝物数量为m,保证k<=n*m<=10000。宝物价值不...

2020-04-05 16:25:15 224

原创 美团笔试复盘

啥也不说了,菜就得挨打。题目大意:给定一个数组a[i],长度为n<=1e5,你必须在其中删除一个数,使得最长连续上升子序列最长。问你最长多长。思路:dp[i][0]表示i-1之前都没有删除的以i为结尾的最长上升子串的长度,dp[i][1]表示i-1之前已经删除过的以i为结尾的最长上升子串的长度。(比赛种我用的是dp[i][1]表示在i点删除,dp[i][2]表示在i之前删除,...

2020-03-20 11:36:52 382

原创 LInux下C++多线程编程总结

C++多线程与多进程编程 Linux下的多线程库:NGPT和NPTL,NPTL比linuxThread效率更高,且符合POSIX编程规范,因此通常都是用POSIX下的线程库:pthread标准 NPTL的实现包括三个内容,创建线程和结束线程;读取和设置线程属性;POSIX线程同步的方式:POSIX 信号量,互斥条件和条件变量。 线程模型 线程是程序中完成一个独立任务的完整执...

2020-03-08 15:02:21 484

原创 BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路 ——Dijkstra+玄学

这个题玄学冲过,规定每个点访问次数不能超过50次,然后找优先队列中第二次到达终点t的状态返回就ok记录一下,怕忘了#include <cstdio>#include <cstring>#include <algorithm>#include <iostream>#include <vector>#include &lt...

2020-03-07 16:44:12 167

原创 Linux高性能服务器编程学习笔记——简单半同步/半异步进程池的实现

这是游双大大的《linux高性能服务器编程》第15章实现的半同步/半异步的进程池,使用了统一事件源的思想,这是我在阅读完源码之后记下的笔记以及注释,确确实实学习到了很多东西,只有在实战编程中才能记得更牢靠,更熟练。#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#...

2020-03-04 18:05:33 399 2

原创 【持续更新】碰见频率高的几种dp

都是一些面试笔试常见的问题,基本思路理解了就很简单。最长公共子序列#include <bits/stdc++.h>using namespace std;/*最长公共子序列*/const int maxn=2e3+10;char s1[maxn];char s2[maxn];int dp[maxn][maxn];​int dfs(int x,int ...

2020-02-25 12:50:50 209

原创 区间dp练习题

题目链接:https://www.luogu.com.cn/problem/T121078?contestId=26815题目描述阿伟死了 qwq (终于死了) ,因为这个他玩的游戏实在是太难了,他通宵几天都没能过关,最后猝死在电脑前,但是他临走前,给了一个任务,希望你能帮他通过这个游戏,为了阿伟能瞑目,你现在要开始继续玩这个游戏。这个游戏是这样的,你有 n 个矩阵排成一个圈,假设第 ...

2020-02-24 11:47:30 302

原创 字节跳动2018校招后端方向 [编程题]用户喜好

题目描述:时间限制:C/C++ 3秒,其他语言6秒空间限制:C/C++ 256M,其他语言512M为了不断优化推荐效果,今日头条每天要存储和处理海量数据。假设有这样一种场景:我们对用户按照它们的注册时间先后来标号,对于一类文章,每个用户都有不同的喜好值,我们会想知道某一段时间内注册的用户(标号相连的一批用户)中,有多少用户对这类文章喜好值为k。因为一些特殊的原因,不会出现一个查询的用户...

2020-02-23 12:14:50 357 1

原创 腾讯2020校园招聘-后台&综合-第一次笔试题目解析

[编程题]压缩算法时间限制:C/C++ 2秒,其他语言4秒空间限制:C/C++ 256M,其他语言512M小Q想要给他的朋友发送一个神秘字符串,但是他发现字符串的过于长了,于是小Q发明了一种压缩算法对字符串中重复的部分进行了压缩,对于字符串中连续的m个相同字符串S将会压缩为[m|S](m为一个整数且1<=m<=100),例如字符串ABCABCABC将会被压缩为[3|ABC]...

2020-02-19 22:21:03 1679

原创 vivo2019秋招笔试题:运矿石(01背包)

题目大意:给定n(n<=100)个数,每个数不超过100,你需要把n个数分成两堆,两堆个数相差最多为1,且两堆的权值和之差最小,问最小的差是多少?思路:01背包,因为每个数不超过100,总和不超过10000,所以我们可以判断每个和空间是否可以到达。dp[j][k]表示选择了j个元素,此时和为k是否可行,这里滚动了一维:本来是前i个元素中选择j个,和为k是否可行,内存不够所以进...

2020-02-18 21:41:16 1279

原创 《Linux高性能服务器》——第六章总结

第六章:linux高级i/o函数 网络I/O一直是Linux网络编程中极其重要的一部分,除了前面讲到的send、recv等,socket编程接口还给出了很多高级了I/O函数,这些函数大致分为三类: 用于创建文件描述符的函数,包括pipe,dup/dup2等 用于读写数据的函数,包括readv/writev,sendfile,mmap/munmap,splice和tee ...

2020-02-08 20:40:33 209

原创 01字典树模板——查询一个数组中两两异或的最大值

#include <bits/stdc++.h>#define int long longusing namespace std;const int maxn=1e5+10;int ch[maxn*32][2];//01字典树int val[maxn*32];//节点值int tot;void init(){ tot=1; memset(ch[0],0...

2020-02-07 23:40:10 281

原创 Codeforce 1288 E. Messenger Simulator (思维+树状数组)

题目链接:https://codeforces.com/contest/1288/problem/E题目大意:给定一个1到n的排列,现在有m个操作,每个操作给定一个数x,表示将x移动到排列的第一个,其他位置相对不变,问你每个数,他的位置的最大值和最小值分别是多少?思路:思路应该是模拟操作,并且用数据结构加速操作,如何操作更快呢?因为每次我只移动一个数,其他的数相对位置不会改变,...

2020-01-19 12:41:59 299

原创 Codeforces 1288 D.Minimax Problem (思维题)

题目链接:https://codeforces.com/contest/1288/problem/D题目大意:给定一个n*m的矩阵,m很小,现在你需要在矩阵中选择两行,将他们组成一个新的数列,每个位置为你选择的两行位置的最大值,也就是Ci=max(Ai,Bi)。现在你需要让这个新的数列的最小值最大,问你选择哪两行可以做到?思路:首先,最小值最大的问题可以考虑二分答案mid,考虑...

2020-01-17 17:13:07 403

原创 Codeforce 1288 C.Two Arrays (思维+dp)

题目链接:https://codeforces.com/contest/1288/problem/C题目大意:给定两个整数n和m,现在你需要构造如下两个数组A,B:两个数组的长度均为m 两个数组的元素均在[1,n]之间,允许重复 对于任意位置i,有Ai<=Bi A数组元素是非递减排列的,也就是Ai<=Ai+1 B数组元素是非递增排列的,也就是Bi<=Bi+1...

2020-01-16 17:18:48 556

原创 AtCoder Beginner Contest 150 D - Semi Common Multiple

题目描述给定一个n长度的数组A=a1,a2,a3.....an,数组元素均为偶数,现在定义一个半公倍数X如下: 对于所有的i∈[1,n],都存在一个非负整数p,满足​ 题解请你找到在区间[1,M]的范围内,有多少个数组A的半公倍数X。首先很明显的是,X一定是所有​的公倍数,因为原式可变形为​​其次,X一定是所有的奇数倍,因为原式还可以写成有了这两个东西,其实就可以算了...

2020-01-14 17:00:22 673

原创 牛客练习赛56D.小翔和泰拉瑞亚(线段树+思维)

题目链接:https://ac.nowcoder.com/acm/contest/3566/D题目大意:给定一个n元素数组,你有m个操作,每次操作可以选择一个区间[li,ri],将这个区间内的数减少vi,你可以选择其中一些进行操作,问你最后可以得到的最大值与最小值的差是多少?思路:因为每个操作是对于区间而言,我们不可能去遍历每个区间,所以需要更好的策略。又因为题中说的是最大值与...

2020-01-02 15:55:57 248

原创 牛客练习赛56.小雀和他的王国 (无向图缩点+树的直径)

题目链接:https://ac.nowcoder.com/acm/contest/3566/E题目大意:给定一个无向图,初始时无向图内的任意两点均有若干条路径,现在你可以加一条边,使得下一次随机删除一条边时,删除的边让某两个城市变成无法连接的概率最小,求最小概率。思路:一眼就可以看出,如果删除的是桥,那么就会形成两个城市无法连接的情况。所以我加边的时候就需要尽可能地让一些桥变成...

2020-01-01 12:09:58 169

原创 牛客练习赛56C.小魂和他的数列(dp+树状数组)

题目大意:给定一个n元素的数列,第i个数为Ai,求这个数列中一共有多少个长度为K的子序列是严格递增的。思路:线段树写多了,看见n这么大,感觉不能开k颗线段树呀,那怎么做呀?都忘了还有树状数组了23333dp(i,j)表示以i元素为结尾的,长度为j的严格递增子序列的个数。那么递推式如下:所以就变成如何快速计算比i小且a[k]比a[i]小的dp(k,j-1)的和了。发现...

2020-01-01 00:06:35 233

原创 linux高性能服务器编程——第五章总结

第五章 Linux网络编程基础API第五章主要介绍的是Linux网络编程中最常用的API,也就是系统为我们提供的网络编程接口——Socket。Socket可以看成是一个可读,可写,可控制, 可关闭的文件描述符,同时也是我们控制系统内核的一个接口,它为我们提供了许多功能的函数。书中首先介绍的是Socket的地址API。Socket地址API的内容:1.基本知识:主机字节序与网络字节序...

2019-12-30 17:13:59 360

原创 AtCoder Beginner Contest 149 F.Surrounded Nodes (期望)

题目链接:https://atcoder.jp/contests/abc149/tasks/abc149_f题目大意:给定一个N个节点的树,每个节点有1/2的概率染黑,有1/2的概率染白,随机染色之后,在树上找到一个最小的连通块S,使得S包围所有的黑色节点,求S包围的白色节点的期望个数。对1e9+7取模。比如,如下样例:31 22 3只有一种情况S中包含白色节点,即1...

2019-12-29 21:26:06 762 4

原创 AtCoder Grand Contest 041 B.Voting Judges (二分)

题目链接:https://atcoder.jp/contests/agc041/tasks/agc041_b题目大意:有n个问题,m个裁判,每个裁判会给v个不同的问题投票,投一票加一分;同时每个问题还有一个ai作为初始分数,现在在所有裁判投票完成后,选取前p大的问题,如果a[p]==a[p+1]==a[p+2]这样的话,相同的分数都会选择进来,问你有多少个问题可能被选择?思路:比赛...

2019-12-29 15:32:26 391

原创 Codeforces 1278 D.Segment Tree(排序+set)

题目链接:https://codeforces.com/contest/1278/problem/D题目大意:给定一堆线段[li,ri],每个线段的端点都不一样,如果两个线段相交,那么他们必须是有一段相交而不是内嵌,比如[1,3]与[2,4]相交,而[1,4]与[2,3]不相交。现在,对于每对相交的线段,我们对他们建边,比如[l1,r1]与[l2,r2]相交,1和2就可以建边,问你最后...

2019-12-24 12:01:25 534

原创 Codeforces 1278 B. A and B (思维题)

题目链接:https://codeforces.com/contest/1278/problem/B题目大意:给定两个整数a,b,现在进行以下的操作:第一次操作,从a,b两个数中选择一个+1。第二次操作,从a,b两个数中选择一个+2。第三次操作,从a,b两个数中选择一个+3。....问你最少需要多少步骤的操作,使得a,b两个整数相等?思路:要让两个数相等,我们肯...

2019-12-23 16:41:35 931

原创 Codeforces 1269E. K Integers(逆序对,树状数组+二分)

题目链接:http://codeforces.com/contest/1269/problem/ECodeforces 1269E. K Integers题目大意给定一个1到n的排列,定义一个移动操作为:交换相邻的两个元素。现在定义一个函数f(x),表示在原排列中,通过交换操作,形成一个1,2,3....x的排列的子串,需要的最小操作步骤。子串意味着这个排列必须是相邻的。现...

2019-12-23 14:17:03 678

原创 TCP的三次握手与四次挥手

资料参考于1.《Linux高性能服务器编程》2.https://blog.csdn.net/qq_38950316/article/details/81087809基础的协议知识需要牢牢掌握,这样才能抓住问题的本质。一.TCP头部结构要全面了解TCP,首先了解一下TCP的头部结构组成. 两个16位端口号:分别告知主机该报文段来自哪里,以及传给哪个上层协议或者应用程度。...

2019-12-21 17:07:54 144

原创 腾讯2018秋招正式笔试题目——拼凑硬币

时间限制:(每个case)2s 空间限制:128MB小Q十分富有,拥有非常多的硬币,小Q拥有的硬币是有规律的,对于所有的非负整数K,小Q恰好各有两个面值为2^K的硬币,所以小Q拥有的硬币就是1,1,2,2,4,4,8,8,…。小Q有一天去商店购买东西需要支付n元钱,小Q想知道有多少种方案从他拥有的硬币中选取一些拼凑起来恰好是n元(如果两种方案某个面值的硬币选取的个数不一样就考虑为不一...

2019-12-20 16:13:03 313

原创 [HAOI2015]树上操作

题目描述有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。 操作 3 :询问某个节点 x 到根的路径中所有点的点权和。 输入格式第一行包含两个整数 N, M 。表示点数和操作数。 接下来一行 N 个整数,表示树中...

2019-12-12 16:34:03 329 1

原创 [HAOI2015]树上染色(树上背包)

题目描述有一棵点数为 N 的树,树边有边权。给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 。 将所有点染色后,你会获得黑点两两之间的距离加上白点两两之间的距离的和的受益。问受益最大值是多少。输入格式第一行包含两个整数 N, K 。接下来 N-1 行每行三个正整数 fr, to, dis , 表示该树中存在一条长度为 ...

2019-12-11 21:30:55 210

原创 P4587 [FJOI2016]神秘数

题目大意一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数。例如S={1,1,1,4,13}, 1 = 1 2 = 1+13 = 1+1+14 = 45 = 4+16 = 4+1+17 = 4+1+1+18无法表示为集合S的子集的和,故集合S的神秘数为8。现给定n个正整数a[1]..a[n],m个询问,每次询问给定一个区间l,r,求由a...

2019-12-09 21:22:48 257

原创 Codeforces 1255 div2 E1 Send Boxes to Alice (Easy Version)

题目描述给你一个序列,ai表示i位置有多少个糖果,每次你可以将一个位置i的一个糖果给位置i+1或者位置i-1(如果存在的话),现在你需要对糖果进行移动,对于每个有糖果的堆,糖果的数量必须是一个数k(k>1)的倍数,允许空堆的存在,问你最少需要移动多少步?思路假设n堆中有m个为1的糖果,也就是总共为m个糖果,如果可以不全部汇总,我肯定可以将m个糖果分为k堆,k为m的因子,比如1 1...

2019-12-06 17:17:22 209

原创 UValive 4288 (二分图最大独立集)

题目大意有n个人,有c只猫与d只狗,每个人要么喜欢一只狗且讨厌一只猫,要么喜欢一只猫且讨厌一只狗,所以每个人都希望自己喜欢的被留下,自己讨厌的被带走,这样这个人就会满足,现在你需要找到一个猫狗集合方案,使得满足的人尽量多,求最多的满足人数。思路图很大,且样例很多,不能暴力建图(就是每个人除了对自己讨厌的东西之外都建边),所以需要思维优化。可以这样考虑,如果一个人喜欢的猫或狗是另一个人所...

2019-12-04 17:22:59 169

原创 牛牛的回文串(区间dp)

题目大意牛牛喜欢回文串,牛妹给了牛牛一个字符串S,牛牛想把S变成回文串 牛牛可以做如下三种操作 1:在任意位置增加一个字符 2:删除一个字符 3:改变一个字符每种操作都有限定的字符,比如,只能删除'a',增加'b',把'c'变成'd'等等 每种操作都有相应的代价 用M条语句来描述能进行的操作 add c x 表示增加c字符需要x的代价 erase c x表示删除c字符需要x的代价 chan...

2019-12-03 21:02:01 388

原创 平面点对问题,切比雪夫距离

题目描述给定平面的n个点(n<=1e5),所有坐标的绝对值在50000以内,现在问你有多少对点之间的距离不小于d。这里距离描述为两点的曼哈顿距离,即dist=|xi-xj|+|yi-yj|。思路如果将平面上小于等于d的曼哈顿距离画出来,会是一个菱形切比雪夫距离:平面上两个点(x1,y1)(x2,y2)的切比雪夫距离为max⁡(∣x1−x2∣,∣y1−y2∣),其中∣...

2019-12-03 15:37:23 2005

原创 Codeforce 1260 D.A Game with Traps(二分+贪心)

题目链接:https://codeforces.com/contest/1260/problem/D题目大意:一个长度为n+1的直线上有k个陷阱,每个陷阱描述为{l,r,v},表示这个陷阱的起始点l,终止点r,力量值v,你有m个士兵,每个士兵有一个能力值ai,当ai<vi时表示士兵i不能越过陷阱i,但是你可以走过去,当你经过位置ri时,陷阱i就消失了,初始时你们都在位置0,现在要去位...

2019-11-29 14:00:42 237

空空如也

空空如也

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

TA关注的人

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