自定义博客皮肤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 98 1

原创 营救 【题解】

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

2020-08-02 19:21:43 792 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 87

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

问题的提出 : 给定一个序列 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 96

原创 词典(map)题解

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

2020-07-25 20:54:43 490

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

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

2020-07-25 20:32:44 53

原创 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 38

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

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

2020-07-25 20:31:54 54

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

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

2020-07-20 22:04:37 115

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

建议全屏阅读 这道题可以用 贪心 + 大根堆 来解决。 先把题目放上来。 描述 有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 168 1

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

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

2020-07-19 21:49:02 98

原创 中位数题解 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 179 1

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

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

2020-06-21 22:54:42 79

原创 花店橱窗设计 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 129

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

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

2020-06-21 12:41:55 201

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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