自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 图论基础------存储与查询

图论 (graph) ,其实就是把很多个相同的事物抽象为一个个点,把它们之间的关系抽象为一条边,从而组成一张图。比如我们熟悉的树,他就是一张图。图分为无向图和有向图,他们分定义分别如下:无向图:两个点之间的一条边没有规定方向,比如: A 点与 B 点之间有一条路径,那么可以从 A 点到 B 点,也可以从 B 点到 A 点。也就是说这条路是双行道。有向图:两个点之间的边可能有多条,并且规定了方向。A 到 B 有一条路径,A 可以从这条路到 B ,但是从 B 不可以到 A 。也就是像生活中的汽车单行

2020-07-29 20:57:01 326 1

原创 营救 【题解】

营救:内存限制:256 MiB 时间限制:1000 ms题目描述:铁塔尼号遇险了!他发出了求救信号。距离最近的哥伦比亚号收到了讯息,时间就是生命,必须尽快 赶到那里。通过侦测,哥伦比亚号获取了一张海洋图。这张图将海洋部分分化成 n*n 个比较小的单位,其中用 1 标明的是陆地,用 0 标明是海洋。船只能从一个格子,移到相邻的四个格子。为了尽快赶到出事地点,哥伦比亚号最少需要走多远的距离。输入格式第一行为 n,下面是一个 n*n 的 0、1 矩阵,表示海洋地图。最后一行为四个小于

2020-08-02 19:21:43 1557 3

原创 树状数组:区间修改,单点查询(详解)

我已经在上一篇博客 《树状数组:单点修改,区间查询(详解)》中介绍了树状数组,并且讲解了一道例题。今天就再来看一道题:题目描述给定数列 ,你需要依次进行 q个操作,操作有两类:1 l r x:给定 ,对于所有 ,将 加上 (换言之,将 分别加上 );2 i:给定 ,求 的值。输入格式:第一行包含 2 个正整数 ,表示数列长度和询问个数。第二行 n个整数 ,表示初始数列。接下来 q 行,每行一个操作,为以下两种之一:1 l r x:对于所有 ,将 a[r] 加上 x ;2 i :给

2020-07-26 21:49:09 701 1

原创 树状数组:单点修改,区间查询(详解)

问题的提出 :给定一个序列 a,可以进行两种操作:1 i x :给定 i , x, 将 a[i] 加上 x;2 l r :给定 l , r, 求 a[l] + a[l + 1] + ··· + a[r + 1] 的值(单点修改,区间查询)首先,我们会想到直接用一个现行的数组。那么单点修改的时间复杂度将是 O(1)O(1)O(1),但是区间查询的时间复杂度却是 O(n)O(n)O(n), 数据范围一大,就很有可能会超时。那么,又有人会想到用一个前缀和数组,但是有没有想过,虽然区间查询的时间复

2020-07-26 20:08:16 1049 1

原创 词典(map)题解

题目描述你旅游到了一个国外的城市。那里的人们说的外国语言你不能理解。不过幸运的是,你有一本词典可以帮助你。输入格式首先输入一个词典,词典中包含不超过100000个词条,每个词条占据一行。每一个词条包括一个英文单词和一个外语单词,两个单词之间用一个空格隔开。而且在词典中不会有某个外语单词出现超过两次。词典之后是一个空行,然后给出一个由外语单词组成的文档,文档不超过100000行,而且每行只包括一个外语单词。输入中出现单词只包括小写字母,而且长度不会超过10。输出格式在输出中,你需要把输入文

2020-07-25 20:54:43 2564 1

原创 STL------stack, queue(预习和复习)

学了STL,在此处做一些总结。常用的STL有如下几个:stackqueuepriority_queuepairsetmapvector下面让我们来分别了解一下前两个吧stackstack,翻译为栈。stack <int> s;//定义一个为 int,栈名为 s 的栈栈是一个先进后出的数组,它支持以下几种操作:pop(),用于弹出栈顶。top(),同于查询栈顶empty(),用于查询栈是否为空,是则返回1push(x),用于把 x 存入栈中例题讲解题

2020-07-25 20:32:44 201

原创 STL ------ priority_queue(预习和复习)

priority_queue与一个堆的实现是相同的,只不过它把 Put_Heap, Get_Heap 都简化了。它的定义如下:priority_queue <int> s;//定义一个名为 s 的大根堆假如说想要定义一个小根堆的话,可以这样:priority_queue <int, vector <int> , greater <int> > q //定义一个名字为 q 的小根堆priority_queue <int, vector <i

2020-07-25 20:32:15 118

原创 STL------map,vector(预习和复习)

map,翻译为映射。书上都说的不是很通俗(反正我是没看懂),它的作用如下:对于两个不同类型的变量之间建立一种联系,(就像搭了一座桥),调用的时候用迭代器实现,下面上代码。map <string, int> mp;//把一个 string 型的 数据映射成 int 型,在这里说可能不是很清楚,看下面的的例题哦~题目描述:博主yanglin英语非常不好,为了应对全国英文四级考试,他手里有一本英语字典,现在有很多单词要查。请编写程序帮助他(跪求)快速找到要查的单词所在的页码。输入描述

2020-07-25 20:31:54 269

原创 堆学习笔记(带有例题与详细讲解)

今天老师讲了一下堆,就在这里做一个小结吧~堆,其实可以把它理解为一棵完全二叉树。我们所见到和用到的堆大多数都是二叉堆,所以甚至有一些书上直接把二叉堆称为堆。堆在我们的脑海之中是一棵完全二叉树,但是他实际是用一个数组...

2020-07-20 22:04:37 257

原创 鱼塘钓鱼题解(堆解决)

建议全屏阅读这道题可以用 贪心 + 大根堆 来解决。先把题目放上来。描述有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表:鱼塘编号 1 2 3 4 5每1分钟能钓到的鱼的数量(1..1000) 10 14 20 16 9每1分钟能钓鱼数的减少量(1..100) 2 4 6 5 3当前鱼塘到下一个相邻鱼塘需要的时间(单位:分钟)3 5 4 4即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,……,第5分钟以后再也钓不到

2020-07-20 21:08:53 1718 1

原创 分离与合体 题解(通俗易懂)

建议全屏阅读还是先把题目放上来吧~~经过在机房里数日的切磋,LYD 从杜神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试……杜神牛造了 个区域,他们紧邻着排成一行,编号 。在每个区域里都放着一把 OI 界的金钥匙,每一把都有一定的价值,LYD 当然想得到他们了。然而杜神牛规定 LYD 不能一下子把他们全部拿走,而是每次只可以拿一把。为了尽快得到所有金钥匙,LYD 自然就用上了刚学的分离与合体特技。一开始 LYD 可以选择 中的任何一个区域进入,我们不妨把这个区域记为 。进入后 LYD 会在

2020-07-19 21:49:02 495

原创 中位数题解 c++(详细)

拙笔如下题目是这样的题目描述:给你n个整数ai和一个整数s,题目数据保证n是奇数。1次操作可以使n个数中的任意一个数增加1或者减少1。你现在的任务是计算出使这n个整数的中位数变为s的最小操作数是多少?输入格式:输入一共有两行。第一行有两个整数n和s,分别表示整数的个数和题目描述的s的值第二行包含n个用空格分开的整数,a1,a2,a3,...,an。输出格式:输出只有一个整数,表示最小操作数。这道题我认为有坑中位数并不是一开始的,在做完一次之后要继续操作,直到符合条件。不然就.

2020-06-29 12:56:24 1297 1

原创 基本的回文串练习(区间dp来做)

这道题的标签很简单,就是一道入门题。但是我发现,这道题其实是可以用dp来做的.首先,把题目放上来:题目描述给定一个字符串,输出所有长度至少为2的回文子串。回文子串即从左往右输出和从右往左输出结果是一样的字符串,比如:abba,cccdeedccc都是回文字符串。样例输入123321125775165561样例输出331177552332211257756556123321165561我们首先定义状态:dp[i][j] 为 i ~ j 的区间是否为回文串所以我的

2020-06-21 22:54:42 295

原创 花店橱窗设计 c++

这道题其实并不难首先,我们可以把这道题看做是数字三角形的一个升级版就可以了。(假如说仔细想一想是可以理解的)状态 :f[i][j] 为到第i排, 第j列路径上的最大值;(包括前面的)接下来就是思路了:f[i + 1][k] = max(f[i + 1][k], f[i][j] + a[i + 1][k]);先把状态转移方程亮出来~~首先,我们就根据样例来说:在最开始的时候,我们要把f[i][j] = a[i][j], 因为在当前的还没有进行操作的时候,最大值其实就是他自己根据这张图,.

2020-06-21 12:52:42 526

原创 完整递推总结(包括各个板块)

递推是什么?递推是一种在数学中一种极为常见,极为普及,极为重要的解决问题的方法。递推算法是一种用若干步可重复运算来描述复杂问题的方法。递推是序列计算中的一种常用算法。通常是通过计算前面的一些项来得出序列中的指定项的值。要递推,先找到递推式。分析题意,一步步进行推理。其实就是找规律,只不过,比小学难得多。递推的基本模型有:FibonacciHanoi塔分割平面Catalan数第二类stirling数基本模型来开会1.Fibonacci题目直通车简介斐波纳契数列原型:1,

2020-06-21 12:41:55 440

空空如也

空空如也

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

TA关注的人

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