自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一只老风铃

今已亭亭如盖矣

  • 博客(17)
  • 资源 (2)
  • 收藏
  • 关注

原创 树的分割:DFS后序遍历

题目描述有n个房间,房间之间有通道相连,一共有n-1个通道,每两个房间之间都可以通过通道互相到达。通过封闭一些通道来把n个房间划分成k个互相不连通的区域,他希望这k个区域内部的金币数目和都大于等于m,是否可行。示例1输入3,2,3,[1,2],[2,3],[3,1,2]返回值true说明切断1和2之间的通道,划分出了2个金币数为3的连通块第一个参数n代表房间数量第二个参数k代表要划分成k块区域。第三个参数m代表每块区域的金币数要大于等于m第四、五个参数vector

2021-03-28 13:01:10 360

原创 Leetcode通配符匹配②

题目描述请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配示例1输入“aaa”,“a*a”返回值true思路本题不同于以往的.代表一个字符 代表任意字符串(包含空)的问题。本题代表前面的字符可以统配0或者多次采取dp[i][j]表示串的前面i

2021-03-23 01:36:53 141

原创 STL:迭代器iterator

迭代器模式迭代器模式:提供一种方法,使得外部可以依次访问内部的元素,而不需要明确其结构的内部实现。STL的中心思想是:数据容器与算法分离,彼此独立设计,最后通过一定的融合技术将两者结合使用。STL三大基本组件:容器、算法、迭代器Iterator find(Iterator first,Iterator last,const T& val){ while(first!=last && *first!=val) { fir

2021-03-22 11:46:15 220

原创 再谈std:string

string的三种实现方式《Effctive STL》中提及std:string有三大类实现方式方法原理无特殊处理 eager copy采取类似于std:vector的数据结构,早期实现方式Copy On Wirte 写时复制即维护一个指向字符串存储空间的指针短字符串优化SSOstring对象本身空间可以存放16长度以内字符串,长字符串则由指针指向常见C++实现库采取的string实现方法:库实现方式g++ std:stringCO

2021-03-19 11:27:59 491

原创 linux虚拟内存④:段与缺页

Linux虚拟内存系统Linux将进程的地址空间,将虚拟内存区域组成一些区域(段)的集合。一个区域就是已分配的虚拟内存连续片(chunk),这些段通过某种方式相互链接。一个进程的地址空间由下而上由多个不同类型的连续区域(段)组合而成:代码段、初始化数据段、未初始化数据段、运行时堆区域、共享库的映射区域、运行时栈区域、内核代码和数据段(多个进程通过虚拟内存方式共享)、内核为每个进程维护的元数据(页表、task_struct、mm结构)它们在虚拟地址空间中内部连续,中间则存在空隙,内核通过链表(

2021-03-18 10:48:00 348

原创 区间+二分:求解最值

二分思想当可以确认所求的问题的解,一定位于一个有序区间内,并且满足区间前面部分满足要求,区间后面部分不满足要求,那么可以采取二分的思想进行对数级别复杂度的求解定位。题目描述一个长度为n的正整数序列,从里面取出一段连续的长度大于等于k的序列。定义一个序列的“中数”为最大的整数x,满足序列中至少一半的数字大于等于x从中任取序列的,若存在中数,最大中数可以是多少?示例1输入5,3,[30,1,2,31,9]返回值30说明选前四个数字组成[30,1,2,31],中数为30求

2021-03-16 12:07:17 300

原创 dp+滚动区间:字母交换

dp问题的核心思路是利用之前的计算结果来计算当前的问题,主要包含两大类型:①用序号之前的计算结果,即k=>k+1由k步结果计算k+1结果②用小规模问题的计算结果,例: [left+1,right-1]=>[left,right]即无关序号,关心问题规模题目描述字符串S由小写字母构成,长度为n。定义一种操作,每次都可以挑选字符串中任意的两个相邻字母进行交换。询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同?输入描述:第一行为一个字符串S与一个非负整数m。(1.

2021-03-15 14:15:20 178

原创 BFS+优先队列:BOX

题目描述有一个推箱子的游戏, 一开始的情况如下图:上图中, ‘.’ 表示可到达的位置, ‘#’ 表示不可到达的位置,其中 S 表示你起始的位置, 0表示初始箱子的位置, E表示预期箱子的位置,你可以走到箱子的上下左右任意一侧, 将箱子向另一侧推动。如下图将箱子向右推动一格;…S0… -> …S0.注意不能将箱子推动到’#'上, 也不能将箱子推出边界;现在, 给你游戏的初始样子, 你需要输出最少几步能够完成游戏, 如果不能完成, 则输出-1。输入描述:第一行为2个数字,n,

2021-03-14 12:51:57 164

原创 贪心算法:平均

题目描述有三只球队,每只球队编号分别为球队1,球队2,球队3,这三只球队一共需要进行 n 场比赛。现在已经踢完了k场比赛,每场比赛不能打平,踢赢一场比赛得一分,输了不得分不减分。已知球队1和球队2的比分相差d1分,球队2和球队3的比分相差d2分,每场比赛可以任意选择两只队伍进行。求如果打完最后的 (n-k) 场比赛,有没有可能三只球队的分数打平。输入描述:第一行包含一个数字 t (1 <= t <= 10)接下来的t行每行包括四个数字 n, k, d1, d2(1 <= n

2021-03-12 09:52:12 236

原创 Leetcode:dp+跳转

题目描述存在n+1个房间,每个房间依次为房间1 2 3…i,每个房间都存在一个传送门,i房间的传送门可以把人传送到房间pi(1<=pi<=i),现在路人甲从房间1开始出发(当前房间1即第一次访问),每次移动他有两种移动策略:A. 如果访问过当前房间 i 偶数次,那么下一次移动到房间i+1;B. 如果访问过当前房间 i 奇数次,那么移动到房间pi;现在路人甲想知道移动到房间n+1一共需要多少次移动;输入描述:第一行包括一个数字n(30%数据1<=n<=100,10

2021-03-11 11:49:00 269

原创 优先队列+模拟:任务调度

问题描述存在多个任务,而这些任务需要人员实现。在某个时间会出现一些任务,每个 有提出时间、所需时间和优先等级。最想实现的任务首先考虑优先等级高的,相同的情况下优先所需时间最小的,还相同的情况下选择最早想出的。同时有M个人员,每个人员空闲的时候就会查看尚未执行并且最想完成的一个任务,然后从中挑选出所需时间最小的一个任务独立实现,如果有多个同时处于空闲状态的人员,那么他们会依次进行查看。输入描述:输入第一行三个数N、M、P,分别表示有N个PM,M个人员,P个任务。随后有P行,每行有4个数字,分

2021-03-10 11:14:57 448

原创 单调栈进阶-区间合并

单调栈随着不断的输入数字,从栈底到栈顶维护一个递增的数列,当新来的数字比栈顶更小时,弹出栈顶并完成某种计算,直到保持递增趋势。问题描述给定一个数组序列,需要求选出一个区间,使得该区间是所有区间中经过如下计算的值最大的一个:区间中的最小数*区间所有数的和如给定序列 [6 2 1]则根据上述公式,可得到所有可以选定各个区间的计算值:[6] = 6 * 6 = 36;[2] = 2 * 2 = 4;[1] = 1 * 1 = 1;[6,2] = 2 * 8 = 16;[2,1]

2021-03-08 23:42:04 248

原创 集合划分问题-DFS与回溯

集合划分问题集合划分问题是对这样一类问题的抽象,即原始问题包含一些列可能结果,不断的划分出子集并研究剩余的集合能否继续划分,即问题能否最终求解,通常采取dfs进行求解题目描述一种卡牌游戏,规则如下:总共有36张牌,每张牌是1~9。每个数字4张牌。你手里有其中的14张牌,如果这14张牌满足如下条件,即算作和牌14张牌中有2张相同数字的牌,称为雀头。除去上述2张牌,剩下12张牌可以组成4个顺子或刻子。顺子的意思是递增的连续3个数字牌(例如234,567等),刻子的意思是相同数字的3个数字牌(

2021-03-06 12:47:59 398

原创 TSP问题-二进制+DP

题目描述从北京出发,分别去若干个城市,然后再回到北京,每个城市之间均乘坐高铁,且每个城市只去一次。由于经费有限,希望能够通过合理的路线安排尽可能的省一些路上的花销。给定一组城市和每对城市之间的火车票的价钱,找到每个城市只访问一次并返回起点的最小车费花销。输入描述:城市个数n(1<n≤20,包括北京)城市间的车票价钱 n行n列的矩阵 m[n][n]输出描述:最小车费花销 s输入40 2 6 52 0 4 46 4 0 25 4 2 0输出13求解思路旅行商T

2021-03-03 14:34:52 308

原创 字典树-异或问题

题目描述给定整数m以及n各数字A1,A2,…An,将数列A中所有元素两两异或,共能得到n(n-1)/2个结果,请求出这些结果中大于m的有多少个。输入描述:第一行包含两个整数n,m.第二行给出n个整数A1,A2,…,An。对于30%的数据,1 <= n, m <= 1000对于100%的数据,1 <= n, m, Ai <= 10^5示例1输入3 106 5 10输出2求解思路容易知道如果两个数字异或的结果res大于m, 那么一定是从某一位开始

2021-03-02 14:37:44 437

原创 获取最长递增子数组(连续递增子序列)

最长递增子数组的求解方式,即研究以arr[i]结尾的递增子数组长度,采取经典动态规划即可题目描述现在有一个n个数组成的数列,牛牛现在想取一个连续的子序列,并且这个子序列还必须得满足:最多只改变一个数,就可以使得这个连续的子序列是一个严格上升的子序列,这个连续子序列最长的长度是多少。示例1输入[7,2,3,1,5,6]输出5求解思路现需要修改其中一个数,使得前后构成递增子数组,那么需要知道以任意一个位置开始或者结束的递增子数组长度实现细节:head[] tail[]分别表.

2021-03-01 12:53:43 1940

原创 单源最短路径算法

对于单源最短路径算法,最为著名的为基于贪心策略的dijkstra,其维护一个从开始点到所有点的Dis[]数组,每次选取剩余点中距离源点最短的点,加入到已访问集合U中,同时更新源点到剩余点集合V中的点的Dis[]数组。题目描述在一个有向无环图中,已知每条边长,求出1到n的最短路径,返回1到n的最短路径值。如果1无法到n,输出-1输入5,5,[[1,2,2],[1,4,5],[2,3,3],[3,5,4],[4,5,5]]输出9核心公式: dis[index]+map[index][.

2021-03-01 05:10:28 930

计算机图形学-Bezier与Bspline曲线,曲面

MIT计算机图形学作业 C++实现,Bezier曲线,Bspline曲线

2018-01-05

正则式到最小化DFA

实现了从正则式子到NFA,NFA到DFA,并最小化DFA的过程,

2018-01-05

空空如也

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

TA关注的人

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