自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘少华的博客

一位在读大学生,大佬、巨佬以及传说中的神秘人看见了哪里写的不好请多多提点、指导

  • 博客(23)
  • 收藏
  • 关注

原创 在C中使用string类输入与输出

       问题描述:由于在考虑的C语言输入输出的效率较C++高,但string类在C++语言中使用具有较好的效果,所以在开发中就希望在使用C语言的输入输出string类型,但是C语言无法直接对string类进行操作,所以需要对string类数据进行处理。       解决思路:思路一:众所周知C语言中的字符串类型为(char *)而对应的C++里面实质上string类型是对(char *)...

2018-09-09 11:46:27 20234

原创 依赖背包

问题描述这种背包问题的物品间存在某种“依赖”的关系。也就是说,i依赖于j,表示若选物品i,则必须选物品j。为了简化起见,我们先设没有某个物品既依赖于别的物品,又被别的物品所依赖。算法描述在选择记录物品时时将不存在依赖关系的物品和存在依赖关系的物品分开存储,且对于依赖关系建立映射。在遍历每个不存在依赖关系的物品时,针对每个物品在遍历的时候需要对与那些依赖的物品同时进行选择遍历,将其进行组...

2019-09-29 14:57:31 221

原创 分组背包

问题描述有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。算法描述这个问题变成了每组物品有若干种策略:是选择本组的某一件,还是一件都不选。也就是说设f[k][v]表示前k组物品花费费用v能取得的最大权值,则有状态转移方程:...

2019-09-29 13:37:16 220

原创 二维费用问题

问题描述二维费用指的是每个物品的费用包含两钟不同的费用,选择这件物品必须同时付出这两种代价。对于每一种代价都有一个最大值,问怎样选择才能有最大价值。解题思路按照一维背包的求解思路也可以分为01背包、完全背包、多重背包,不过在计算费用时需要多加一重循环去计算费用...

2019-09-28 13:52:53 1165

原创 混合三种背包

问题描述在现实问题中根据问题的不同有的物品只能取一次,有的物品可以取无限次,有的物品可以取有限次。求解思路即将每个物品按照其问题定义的属性选择按照01背包、完全背包或多重背包问题的思路进行求解,即在求解过程中对物品求解方式进行分类处理。状态转移方程只需要综合三种状态转移方程选择从顺序还是逆序循环即可 压缩内存 ...

2019-09-28 12:14:42 136

原创 多重背包

问题描述有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值 是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。解题思路针对多重背包中第个物品有个物品可以选择,那么选择策略有种,即,那只需要按照完全背包的思路将其动态转移方程改为 当...

2019-09-28 11:40:28 104

原创 完全背包

问题描述完全背包,有件物品和一个容量为的背包。放入第件物品耗费的费用是,得到的价值是,每个物品可以取无限次。求解将哪些物品装入背包可使价值总和最大。例题疯狂采药基本思路问题类似与01背包问题,所不同的是条件由取一件变成了无限件。对于每一件物品来说策略有取或不取,变成了取0件、取1件……取件等多种策略。按照01背包的思路则动态转移方程应为 ...

2019-09-28 10:53:58 97

原创 01背包

问题模板 01背包,有件物品和一个容量为V的背包。放入第件物品耗费的费用是,得到的价值是。求解将哪些物品装入背包可使价值总和最大。 例题采药思路对于01背包问题中的每一种物品都有取或不取两种选择:取或不取。对于子问题定义状态:即表示前件物品恰好放入一个容器为的背包可以获得的最大价值。则其状态转移方程为: ...

2019-09-26 16:30:21 1242 1

原创 c++ 大整数加法、减法、乘法

大整数加法、大整数减法、大整数乘法、大整数除法(还未写)大整数的加法:先对数据进行预处理是两个大整数的位数相等,位数少的那个数在高位补0,使两数的位数相等,便于计算数据的进位,只需要在函数调用的结尾检查一下最高为是否存在进位的情况,如果需要进位则只需要在最后将进位的数加入到返回值中。加法是对两个数从低位向高为相加,对每次相加的值,计算进位,取模加入到当前位置。大整数减法:函数先对两个相等的...

2019-07-11 21:39:18 2434 1

原创 KMP字符串匹配算法

哇哇哇!好难受,写了两个多小时,才通过全部样例。洛谷P1308科普区(国内,国外)在计算机科学中,Knuth-Morris-Pratt字符串查找算法(简称为KMP算法)可在一个主文本字符串S内查找一个词W的出现位置。此算法通过运用对这个词在不匹配时本身就包含足够的信息来确定下一个匹配将在哪里开始的发现,从而避免重新检查先前匹配的字符。这个算法是由高德纳和沃恩·普拉特在1974年构思,同...

2019-07-10 20:28:07 129

原创 线段树

科普区(国内,国外)线段树(英语:Segment tree)是一种二叉树形数据结构,1977年由Jon Louis Bentley发明[1],用以存储区间或线段,并且允许快速查询结构内包含某一点的所有区间。一个包含{个区间的线段树,空间复杂度为,查询的时间复杂度则为,其中是匹配条件的区间数量。此数据结构亦可推广到高维度。(摘自维基百科)个人总结线段树是一棵平衡二叉搜索树,是一...

2019-07-09 17:28:41 393

原创 洛谷日记 Day 7 P1087 FBI树

我在这儿哟(溜~~)个人见解狗题!狗题!狗题!真的是坑!(好了,蒟蒻发泄完了。)这题其实还是二叉树的后序遍历,但是蒟蒻的我拿到题是蒙的,什么,要不要拨打。唉难受。仔细看了下题,大概意思就是说给一个定长的字符串,然后迭代切割一半,直到传长为1。其中全0的构成的树称为树,全1构成的树称为树,既有0又有1的树称为树。让输出这棵树的后序遍历结果。我的做法其实也是蛮简单的,就是构造一个带...

2019-07-07 16:38:41 127

原创 leetcode 144周赛 航班预定统计

看题点这里哦这题是线段树(点这里,大佬讲线段树)的模板题,也比较简单,看到排行榜上的大佬几分钟就给撸出来了,我深感惭愧。以后再接再厉!!!题目题解在给定的区间中算区间内每个点的数据。其实只需要开辟一个数组统计每次预定的航班区间和机票数量,最有一次遍历数组将结果添加进容器中返回即可。来人上代码class Solution { private: const int M...

2019-07-07 13:43:34 527

原创 leetcode 144周赛 删点成林

看题点击这里 这题思路是主要是后序遍历二叉树,需要注意的是在后序遍历(时间复杂度为)的时候将当前结点的父节点也要当作参数传入,如果没有就置为NULL,在遍历的过程中检查当前结点的val是不是在待删除的结点中。因为题中说明了树上每个节点都有一个不同的值都不一样,我先使用set集合将待删除的结点的val存储其中,时间复杂度为;再特判一下根节点是否在待删除的元素中若果要删除根节点,那么...

2019-07-07 13:20:01 394

原创 先序求二叉树

P1030 先序求二叉树题的意思也比较好理解,就是给出中序和后序遍历的次序,让你输出树的前序遍历的次序。科普区树的结点构造struct node{ int val; node *left; node *right;};node *root;树的前序遍历从根节点开始,按找先访问父母结点,再访问左子树和右子树的顺序规则,一直遍历到空结点就结束当前子树的遍历。...

2019-07-07 10:07:41 232

原创 快速幂

俏皮小可爱请点击这里快速幂的模板代码题主要涉及知识点是位运算中的”&“和”>>="这两种运算。&1:任意一个数a&1,如果这个数为奇数,则结果为1,偶数则为0。 >>=k:对任意一个数按二进制位(计算机内部存储)想右移动k位,按位补0,即低位相右移动k位,高位不足部分用0补充。下面直接沾代码:#include<bits/std...

2019-07-06 22:39:11 118

原创 关于位运算的一点点小知识

这里都是一点位运算的小知识点,没怎么详细注明这些运算过程,如果有需要就直接拿走,因为没有太多的过程解释就直接放定理结果,希望同学门见谅。(不喜勿喷)位运算:&: 9&5=1 1001&0101------ 0001 |: 9|5=13 1001|0101------ 1101 ^: 9^5=12 1001^0101------ ...

2019-07-06 22:29:48 473

原创 洛谷日记 Day 6

洛谷P1160 队列安排思路解析这题涉及大量的插入、删除操作,一开始想使用简单的数组模拟,但是后面涉及插入和删除操作,就彻底放弃了这个念头,于是乎决定使用双端循环链表去解决这题。需要注意的是文中提及到的front指针和front结点;next指针和next结点的区别,这里提一下,在下面的阅读中请注意区别。front结点和front指针的区别:是指当前某一节点k的指向的前一个结点,具...

2019-07-06 22:12:01 159

原创 洛谷日记 Day 3 BFS模板

P1141 01迷宫一篇广度优先搜索的模板题,很简单,适合我这种菜鸡去刷。题目描述有一个仅由数字0与1组成的n×n格迷宫。若你位于一格0上,那么你可以移动到相邻44格中的某一格1上,同样若你位于一格1上,那么你可以移动到相邻4格中的某一格0上。你的任务是:对于给定的迷宫,询问从某一格开始能移动到多少个格子(包含自身)。输入输出格式输入格式:第1行为两个正整数n,...

2019-07-03 21:59:15 157

原创 洛谷日记 Day 3 DFS模板

P1605 迷宫发一篇深度优先搜索的模板代码吧!蒟蒻没什么废话要多说,直接发题。题目背景迷宫 【问题描述】给定一个N*M方格的迷宫,迷宫里有T处障碍,障碍处不可通过。给定起点坐标和终点坐标,问: 每个方格最多经过1次,有多少种从起点坐标到终点坐标的方案。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。输入样例 输出样例【数据规模】1...

2019-07-03 21:47:34 132

原创 洛谷日记 Day 3

合并果子题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能...

2019-07-03 21:43:28 137

原创 洛谷日记 Day 2

昨天晚上太忙碌了,忘写了,今天补发P1309 瑞士轮题干:题目背景在双人对决的竞技性比赛,如乒乓球、羽毛球、国际象棋中,最常见的赛制是淘汰赛和循环赛。前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高。后者的特点是较为公平,偶然性较低,但比赛过程往往十分冗长。本题中介绍的瑞士轮赛制,因最早使用于18951895年在瑞士举办的国际象棋比赛而得名。它可以看作是淘汰赛与循环赛的折中...

2019-07-03 21:14:48 156

原创 洛谷日记 Day 1

简单模拟Question 1:铺地毯题目描述:为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有nn张地毯,编号从11到nn。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界...

2019-07-01 20:25:42 146

空空如也

空空如也

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

TA关注的人

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