
算法
收录各种算法
娃娃酱斯密酱
这个作者很懒,什么都没留下…
展开
-
2020蓝桥杯省赛校内模拟赛I题
2020蓝桥杯省赛校内模拟赛I题问题描述 小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。 小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。 这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。 请告诉小明,k 个月后空地上哪些地方有草。输入...原创 2020-03-21 12:35:45 · 412 阅读 · 0 评论 -
CF-Round #637-div2-E题(01bfs)
CF-Round #637-div2-E题(01bfs)E. Nastya and Unexpected Guest传送门这道题是01bfs.题目大意:丹尼尔想尽快从自己家出发到达爱慕的女孩子家中,假设丹尼尔的家在坐标为0的点,女孩子的家在坐标为n的点上。她们家之间的距离看成一条线段。这条路上有红绿灯,当红灯亮起的时候丹尼尔必须处于安全岛的位置(因为这样才是安全的)在安全岛上面非常安全...原创 2020-04-29 17:03:19 · 205 阅读 · 0 评论 -
CF-Round#625-div2-D题
CF-Round#625-div2-D题D. Navigation System传送门一般div1和div2一起的比赛的题目的难度总比单独的div2难度大些。。不知道是不是我的错觉。这道题dijkstra或者bfs都可以解决=-=这道题因为没有要求输出路线。所以bfs直接搜出最短路的大小也可以过。只是=-=emm,原因竟然是dijkstra忘了=-=太久没写了。然后上上个学期的数据结构...原创 2020-03-17 17:56:11 · 654 阅读 · 0 评论 -
CF-Round #636-div3-E题
CF-Round #636-div3-E题E. Weights Distributing传送门这道题是图的问题,bfs~题目大意:给你一个无向无权重的图,假设这个图有n个结点,m条边。你的小伙伴要从所给的结点a到达结点b,再从结点b到达结点c,每经过一条边需要给相应的费用。这个费用已经给出,m个值。要求你给这个图的边赋上权值,使得你的小伙伴需要付出的总费用最小本题思路:要求我们付出的总...原创 2020-04-24 16:15:16 · 215 阅读 · 0 评论 -
POJ-3278-Catch That Cow
POJ-3278-Catch That Cow传送门题目大意:有一个牛,它的位置在k,有一个放牛的人,他的位置在n,现在放牛的人要以最快的速度到达牛的位置,放牛的人有两种方案:(假设放牛人当前的位置是x)1.到达x - 1或者x + 1的位置2.到达x * 2的位置上面两种方案分别耗时1min问放牛人最少多少的时间到达牛的位置本题思路:这道题bfs可以解决,一般我们用bfs解决的是二维迷宫问题,类似的,解决一维问题也是行得通的。用vis[]记录是否到达过该点,到达过该点标记为1。如果在判断原创 2020-10-12 10:56:17 · 114 阅读 · 0 评论 -
POJ-3414-Pots
POJ-3414-Pots传送门这道题是一道判断很多的bfs~题目大意:就是我们小时候玩的两个杯子相互倒水问题,然后最终达到一个预期值。现在分别给你容器为A,B的两个杯子,有一下几个步骤可以实行,问某个杯子是否能达到所给定的预期值C,不能则输出"impossible",否则输出相应的步骤。初始的时候两个杯子都没有水,是空的。操作如下:1.FILL(i) //从水龙头装满某个杯子2.DROP(i) //把i杯子里面的水倒到排水管里面3.POUR(i, j) //将i水杯里面的水倒在j水杯里(原创 2020-10-16 08:50:13 · 195 阅读 · 0 评论 -
2018年第九届蓝桥杯【C++省赛B组】H题
2018年第九届蓝桥杯【C++省赛B组】H题全球变暖你有一张某海域NxN像素的照片,".“表示海洋、”#"表示陆地,如下所示:….##….##……##.…####.…###.…其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(...原创 2020-02-29 14:12:22 · 164 阅读 · 0 评论 -
2013年第四届蓝桥杯C++B组省赛G题
2013年第四届蓝桥杯C++B组省赛G题错误票据某涉密单位下发了某种票据,并要在年终全部收回。每张票据有唯一的ID号。全年所有票据的ID号是连续的,但ID的开始数码是随机选定的。因为工作人员疏忽,在录入ID号的时候发生了一处错误,造成了某个ID断号,另外一个ID重号。你的任务是通过编程,找出断号的ID和重号的ID。假设断号不可能发生在最大和最小号。要求程序首先输入一个整数N(N<...原创 2020-03-07 18:37:42 · 146 阅读 · 0 评论 -
2017年第八届蓝桥杯C++B组G题
2017年第八届蓝桥杯C++B组G题K倍区间给定一个长度为N的数列,A1, A2, … AN,如果其中一段连续的子序列Ai, Ai+1, … Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间。你能求出数列中总共有多少个K倍区间吗?输入第一行包含两个整数N和K。(1 <= N, K <= 100000)以下N行每行包含一个整数Ai。(1 &l...原创 2020-03-03 13:23:25 · 209 阅读 · 0 评论 -
优先队列的使用(附上HDU-1873)
优先队列的使用(附上HDU-1873)看病要排队传送门这个题目是优先队列结构体类型。优先队列如果插入的结点是结构体类型,则要在结构体中重载比较操作符函数有两种重载方式:1.重载方法写在结构体的外面,则函数的参数需要用引用bool operator<(const node& a, const node& b){}2.重载方法卸载结构体的里面,则函数的参数不需要用引用frind bool operator<(node a, node b){}注意:优先原创 2020-11-09 17:00:14 · 116 阅读 · 0 评论 -
2019年第十届蓝桥杯B组省赛(C++)I题
2019年第十届蓝桥杯B组省赛(C++)I题后缀表达式最近做一点蓝桥的题目,我很慌(真),慌的一批。训练一下大脑吧,毕竟最近网课太多加上搞网站,就没怎么敲代码,啊啊啊啊。纠结超慌,不得不写点题目。先开始打算题解直接在网站上面写的,github只给了500M的内存,不忍心,题解还是在优快云上面写吧。。github写Unity3d等的一些开发内容,打算认真搞AI后经验会在上面写。有点坑坑,我...原创 2020-02-27 22:02:04 · 202 阅读 · 0 评论 -
2020第十一届蓝桥杯7月省赛D题
2020第十一届蓝桥杯7月省赛D题试题 D: REPEAT 程序题目描述:题目所给的附件代码我在最后给出因为太长了(1001行)这道题就是一个文件读入,模拟栈的一个问题:我们使用gets()比较方便,可以读入空格。我们就是需要记录缩进有多少,在哪一层循环里面,循环次数是多少。那么我们用a[]表示第i层的缩进b[]表示第i层的循环次数我们首先得统计缩进数有多少,用p来记录如果当前处理的缩进数小于栈顶的缩进数,那么我们弹栈即可,否则入栈。因为翻阅了一下.txt文件,都是+操作,我们只需要原创 2020-10-12 16:50:29 · 299 阅读 · 0 评论 -
PTA-后缀式求值
PTA-后缀式求值传送门这道题是一个简单栈的使用~给你的后缀表达式,那么我们遇到操作数就进栈,遇到操作符就弹两个出来进行运算,然后把运算出来的结果再入栈。特别注意,运算的时候是先出栈的是第二操作数,后出栈的是第一操作数。再就是注意操作数为负数的问题~所以当我们遇到减号的时候,不能一下子就把它看成操作符,还需要判断一下。就这两个易错点。因为我是字符串读入的~所以要把字符串转化为浮点数,我们可以用C中的函数atof(或者C++中的函数strtod),因为这两个函数都是操作char*类型的,我是str原创 2020-11-10 08:36:58 · 3436 阅读 · 0 评论 -
HDU-1237-简单计算器
HDU-1237-简单计算器传送门这道题是一道栈的运用中文题目,我就不描述啦~按照计算法则,是先乘除,后加减。(但实际上计算器是实时计算的)因为是合法的表达式,运算符和操作数之间只有一个空格。所以碰到一个运算符的话那么前后就是操作数。碰到加号将下一个数入栈,碰到减号将下一个数变成他的相反数入栈,碰到乘号和除号就弹出一个数与操作符的下一个数进行运算即可。因为我是getline读入,所以注意一个非负整数不止一位。代码部分:#include <bits/stdc++.h>using原创 2020-11-09 14:50:01 · 312 阅读 · 0 评论 -
HDU-4857-逃生
HDU-4857-逃生传送门这道题是拓扑排序。bfs写。反向建图;比较简单。模板题中文题不做过多的解释。反向建图之后反向输出即可。然后注意cin会tle.: )emmm我又犯错了。注意格式。末尾没有空格。(我PE了)emmm。很简单。不懂的可以看之前发的博客,有详细解释~(我自己回头复习也有帮助啊哈哈哈)这道题跟昨天做的hdu上面的2647简直不要太像好嘛??链接:ht...原创 2020-04-06 12:34:09 · 132 阅读 · 0 评论 -
HDU-2647-Reward
HDU-2647-Reward传送门这道题拓扑排序啦~差不多也是模板题。就是这个地方的建图是逆向建图题目大意:一个老板要发奖金。起价是888.员工之间有要求。(什么a需要比b高啥的)给出m个约束条件。然后问老板最少需要准备多少钱可以满足所有的要求。如果无法满足所有要求的话就输出-1;很显然。不是DAG的话就是 不满足要求的。这个可以在bfs过程中判断~然后把ans[](每个员...原创 2020-04-05 17:40:51 · 120 阅读 · 0 评论 -
HDU-5695-Gym Class
HDU-5695-Gym Class传送门tle选手的成长之路…(果然又tle了)这道题是16年的百度之星的题目啦~还是比较简单的~拓扑排序模板题+贪心不过我喜欢给函数名字取bfs或者dfs啊。。topsort()这样的函数名我倒是没取过(看个人喜好把~)中文题面不解释啦~思路就是拓扑排序emmm.简单的bfs。就是里面需要贪心一下贪心策略:在满足约束的情况下尽可能地把ID大的...原创 2020-04-05 18:09:31 · 135 阅读 · 0 评论 -
HDU-3342-Legal or Not
HDU-3342-Legal or Not传送门这道题拓扑排序模板。bfs嘻嘻题目大意:背景是一个人题目问题的叫做master…帮他解决问题的叫做prentice。这样会构成一对关系。题目每组给出m种关系。判断是否合法。这种关系具有传递性。即A是B的prentice, B是C的prentice。那么A也是C的prentice.判断合法的依据是:A是B的prentice的时候,B不能是...原创 2020-04-05 15:46:07 · 760 阅读 · 0 评论 -
HDU-1285-确定比赛名次
HDU-1285-确定比赛名次传送门这道题是拓扑排序。裸题。最近在写图论~优先队列的运用。用bfs;不能用dfs。因为是输出最小字典序列。in[]记录每个结点的入度。每次把入度为0的结点加入优先队列即可。很简单哈~代码部分:#include <bits/stdc++.h>using namespace std;const int N = 5e2 + 10;i...原创 2020-04-05 12:53:16 · 133 阅读 · 0 评论 -
HDU-4135-Co-prime(容斥)
HDU-4135-Co-prime传送门这道题是容斥~题目大意:给你一个区间[a, b],和一个数n,让你求区间[a, b]范围内的与n互质的数有多少个。解题思路:我们看看数据范围,a和b的区间范围达到了1e15,n的数据范围达到了1e9。t次询问范围在100以内。我们把这道题的思路与前缀和结合起来想一想。求区间[a, b]与n互质的数字,那我们转化成求[1, b]区间与暴力肯定是不行...原创 2020-05-07 15:28:15 · 183 阅读 · 0 评论 -
CF-Round #632-div2-F题
CF-Round #632-div2-F题F. Kate and imperfection传送门这是我第一次写div2的F题似乎=-=这次的div2有点简单。hhh这道题用埃筛嘻嘻。是个贪心把~题目大意:给定一个整数n,区间1~n中任选k个数(k>=2)使得其中两两的最大gcd最小。意思就是任取k中的两个数获得最大的gcd,让gcd最小。贪心策略:我们选...原创 2020-04-10 12:21:38 · 171 阅读 · 0 评论 -
素数处理-埃拉托色尼筛选法(埃式筛)
素数处理-埃拉托色尼筛选法(埃式筛)埃拉托色尼筛选法(The Sieve of Eratosthenes)继欧拉筛之后,我今天补的一篇博客。名字太长了emm。简称就是埃式筛法。埃筛只能解决1e7以下的问题。因为空间受限。这两种筛法其实差不多嘻嘻。埃式筛法是一种古老而简单的方法。可以快速找到[2, n]内所有的素数。初始队列:[2, 3, 4, 5, 6, 7, 8, 9, 10, 1...原创 2020-04-10 13:12:35 · 1152 阅读 · 0 评论 -
HDU-1262-寻找素数对
HDU-1262-寻找素数对传送门这道题是欧拉筛,什么筛都行,只要求得出素数就行。(埃筛也行)中文题目我就不解释拉~vis[]表示素数:vis[i] = 1表示i为素数。这道题我用的欧拉筛。首先就是预处理init()出素数。然后输入的m是一个偶数,要求我们得到差值最小的两个质数,和为m。我们就从m / 2开始,往前走或者往后走都行~第一次遇到的就可以直接输出break啦~代码部...原创 2020-05-08 15:36:32 · 354 阅读 · 0 评论 -
HDU-2841-Visible Trees(容斥)
HDU-2841-Visible Trees传送门这道题是莫比乌斯反演~先开始是在容斥的知识点看到写的=-=后来卡了许久,还是在莫比乌斯反演上面作文章了。。题目大意:农夫夏洛克站在坐标为(0,0)的位置,他去看一个每个网格点都种了树的m*n的网格。问可以看到多少棵树,其中如果有两颗以上的树与夏洛克在同一条直线上,那么夏洛克只能看到一棵树。本题思路:这道题转换过来其实就是让我们求在区间[1...原创 2020-05-06 17:13:02 · 187 阅读 · 0 评论 -
CF-Round#627-div3-D题
CF-Round#627-div3-D题D. Pair of Topics传送门二分排序题。题目大意:要你找一下符合题目要求定义的pair。给了一个序列是老师喜欢某个话题的程度。再给了一个序列是同学喜欢某个话题的程度。选择两个话题:话题i和话题j,如果老师对这两个话题喜欢的程度之和大于同学对这两个话题喜欢的程度之和。那么这一组pair称为好pair。输出好pair的数量。先开始我以为是...原创 2020-03-13 15:49:19 · 182 阅读 · 0 评论 -
CF-Round 85-div2-D题
CF-Round 85-div2-D题D. Minimum Euler Cycle传送门这道题是关于欧拉回路的一道题。前缀和+欧拉回路+二分这几天练的这些题其实都是为这道题做准备的。原先我没有练过欧拉回路,于是当时看到这道题就放着了,学了好几天,第一次写欧拉回路的时候写那个题练了好久,今天再巩固一遍回来做这道题好多了。(尽管这道题不是纯粹的欧拉回路hhh)题目大意:给你一个n个结点的有向...原创 2020-04-18 20:18:44 · 173 阅读 · 0 评论 -
2017年第八届蓝桥杯C++B组I题
2017年第八届蓝桥杯C++B组I题分巧克力儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块...原创 2020-03-03 12:34:27 · 210 阅读 · 0 评论 -
POJ-2528-Mayor's posters
POJ-2528-Mayor’s posters传送门这道题线段树。离散化。二分。题目大意:一块宣传栏,贴不同颜色的海报,宽度与宣传栏等宽,长度不等,给出长度区间表示,用后者覆盖前者,问最后能见几种颜色的海报这道题规模1e7。普通的二叉树肯定会超空间。。思路如下:离散化:提取海报的端点,sort去重。把原来的端点映射到新的线段上即可。压缩完成。然后端点修改。这里二分查找原顺序所在的...原创 2020-03-18 20:49:07 · 122 阅读 · 0 评论 -
CF-Round #635-div2-D题
CF-Round #635-div2-D题D. Xenia and Colorful Gems传送门这道题排序二分模拟题。题目大意:给你三种颜色的宝石,每个宝石有他的重点。主人公会选择每种颜色的宝石各一个。并且要求这三个宝石的重量差的平方和最小。假设选的三个宝石的重量分别是x, y, z;我们要使得下面的式子的值最小:题目思路:其实就是模拟,只是模拟的过程需要二分来优化。我们首...原创 2020-04-17 15:15:53 · 156 阅读 · 0 评论 -
2018年第九届蓝桥杯省赛C++B组F题
2018年第九届蓝桥杯省赛C++B组F题递增三元组给定三个整数数组A = [A1, A2, … AN],B = [B1, B2, … BN],C = [C1, C2, … CN],请你统计有多少个三元组(i, j, k) 满足:1 <= i, j, k <= NAi < Bj < Ck【输入格式】第一行包含一个整数N。第二行包含N个整数A1, A2...原创 2020-02-28 18:15:38 · 170 阅读 · 0 评论 -
2013年第四届蓝桥杯C++B组省赛J题
2013年第四届蓝桥杯C++B组省赛J题连号区间数小明这些天一直在思考这样一个奇怪而有趣的问题:在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现...原创 2020-03-07 23:13:14 · 124 阅读 · 0 评论 -
POJ-1611(并查集 简单 套模板即可)
POJ-1611(并查集 简单 套模板即可)题目链接:http://poj.org/problem?id=1611题目简述:给出嫌疑犯的人数,注意他们的 编号是从0开始的。给出m组数据,每组数据的第一个数据代表这组数据的人数。文件形式输入,‘0 0’结尾,规定0号一直为嫌疑人,问有多少个嫌疑人,打印嫌疑人个数pay attention to:本次代码采用合并优化,和路径压...原创 2019-10-09 17:07:31 · 193 阅读 · 0 评论 -
CF-Round#623-div2-D题
CF-Round#623-div2-D题D - Recommendations传送门这道题是一道贪心题。用了贪心和并查集。先开始用vis[]记录标记的时候开不了那么大。于是换了一种思路了。经典做法应该是贪心+优先队列。这里提供并查集把~题目大意:有不同的报刊社,每家报刊社有一定数量的杂志(应该不是杂志,反正就是物品),然后每家报刊社都有对应自己的算法,执行一次算法需要花费t[i]的...原创 2020-03-24 15:00:33 · 171 阅读 · 0 评论 -
POJ-1988-Cube Stacking
POJ-1988-Cube Stacking传送门这道题是并查集啦~题目大意:初始化的时候单独的列上只有一个方块。给出两个操作:1.移动操作。(a, b)将a上的一整列移动在b的上面2.询问操作。a 计算a下面有多少方块t次询问平常思路路径压缩的时候我们直接把当前结点的父结点fa[]赋值为根结点了。这道题。我们在两个结点结合的时候比如M x, y。x的那一列移动到y的上面。我们...原创 2020-04-07 14:36:24 · 152 阅读 · 0 评论 -
HDU-1213-How Many Tables
HDU-1213-How Many Tables传送门这是一道并查集模板题。原先已经写过并查集3遍了。。但是一直没有整理。一直不写一直忘。吸取经验复习复习!实实在在的模板题。mix()合并init()初始化find()查找。一看就懂emm还是出现了问题。在mix()函数中合并的时候只把子结点的父亲改变了,没有改变子结点的父亲的父亲结点。。emmm时间复杂度O(N)。树的长度。...原创 2020-03-24 15:45:18 · 112 阅读 · 0 评论 -
POJ-1182-食物链
POJ-1182-食物链传送门这道题是并查集的经典题型。难度高于模板裸题。但是又在可控的范围内。中文题就不描述啦~结构体中记录结点信息:p[i].fa记录父结点,p[i].rela记录与父结点的关系。我们路径压缩的时候更新父结点为根结点。这点是很显然的。首先进行归定:p[x].rela = 0;代表与父结点是同类关系。p[x].rela = 1,代表与父结点的关系:父结点吃xp...原创 2020-04-07 18:57:05 · 125 阅读 · 0 评论 -
PTA-L2-013 红色警报 (25分)
PTA-L2-013 红色警报 (25分)传送门这道题,并查集。判断有多少个连通的区域,其实就是并查集的操作中判断有多少个根节点。就是统计根节点的操作cnt。我们最开始应该保存每一条连通的边。在后面的攻占城市中,我们只需要不处理那些攻占城市连通的边即可。用vis[]记录。其他的继续重新使用并查集合并操作,进而统计有多少个根节点sum。判断两个的数量是否相等/相差1(原因是攻占一个城市之后,那个城市会消失,不算入我们连通性中,但是并查集数根节点的时候会计数,所以是相差1)因为题目中提到如果本原创 2020-11-26 20:03:50 · 372 阅读 · 0 评论 -
PTA-L2-007 家庭房产 (25分)
PTA-L2-007 家庭房产 (25分)传送门这道题,简单并查集。就是输出处理麻烦了些许。我们把个人的id作为数组的下标。然后进行存储,合并好之后,用set容器把每个家庭的代表的id存起来,然后相应的存入到结构体中,然后sort一下即可。代码部分:#include <bits/stdc++.h>#define mst(a, n) memset(a, n, sizeof(a))using namespace std;const int N = 1e4+ 10;const int原创 2020-11-26 14:42:52 · 461 阅读 · 0 评论 -
POJ-2492-A Bug's Life
POJ-2492-A Bug’s Life传送门本题带权并查集题目大意:总是把题目中的bug想成代码中的bug,我真是bug脑袋=-=实验开头结论一种稀有虫子只会吸引异性。问实验数据会不会有错或者存在同性相吸的可能给出实验数据。带权并查集哈r[i]表示i与父结点的性别情况为0表示同性。1表示异性在find()函数和mix()函数中有关键代码find()函数处理部分:当前处理结...原创 2020-03-26 21:11:14 · 107 阅读 · 0 评论 -
HDU-1811-Rank of Tetris
HDU-1811-Rank of Tetris传送门这道题是拓扑排序+并查集~中文题面就不过多描述啦~题目思路:我们把rating相等的两个人放在同一个集合里,然后开始逐一判断:如果碰到‘=’直接continue;如果碰到’>’ 或者’<’;但是他们祖先根结点相等的话。就说明出现了错误。标记就行。如果A的rating > B的rating;即A > B;...原创 2020-04-06 16:08:40 · 102 阅读 · 0 评论