![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高效算法蓝书
只努力的程序猿
临渊羡鱼,不如退而结网
展开
-
UVA 11549 calcular conundrum 计算机老谜题
题目大意用一个老式计算器,只显示n位数字,输入一个整数k后计算,计算器会反复平方,直至溢出,每次溢出只显示最高的n位,计算器会一直平方下去,直到出现重复的数字分析题目中已经暗示了计算器显示的数会出现循环,不妨一个一个的模拟,直至出现重复的数字,我们使用集合把出现过的数字进行记录。上代码#include<iostream>#include<algorithm>#...原创 2019-09-22 10:30:18 · 150 阅读 · 0 评论 -
LA 3716 突变区域
题目大意给定两条长度为n的DNA链A和B,你的任务找出突变率不小于p%的最长序列分析A和B可以进行比较,相同为0不同则为1,这样问题就转化为求一段0-1串,一开始还以为时数形结合问题,但是后来想想觉得单调队列无法维护。后来就是公式推演,进行排序,枚举求最大段。//*////*//题目大意;从两个字符串中找出不一样的一段连续字串,一一对应,字串要求,不一样的gailv//不应该超过一个值...原创 2019-09-22 20:13:09 · 140 阅读 · 0 评论 -
LA 3667 刻度尺
题目大意给定n和刻度d,设计一个拥有m个刻度的尺子,使得每个d都可以直接的量出来,要求在m尽量小的情况下保证尺子的总长度尽量短.分析此题目应该采用迭代深搜#include<iostream>#include<algorithm>#include<string.h>#include<queue>#define maxd 1000000+...原创 2019-09-22 20:04:59 · 191 阅读 · 0 评论 -
LA 4253 箭术
题目大意在一个平面上有n条线段,高度代表着y轴坐标 ,在x轴上找一个区间(0,M)使得能够在这个区间内放出一条射线能够击中所有的线段;分析二分+判断 重点时判断如何判断,因为是一条射线我们需要寻找到一个角度能够穿过所有的线段将线段按照高度进行排序,一一遍历,区间逐渐收拢,直到出现不可能的区间点(r<l)表示错误代码如下#include<iostream>#in...原创 2019-09-22 17:46:25 · 111 阅读 · 0 评论 -
UVA 10391复合词
题目大意 给定一个词典,要求找出所有的复合词,即恰好有两个单词连接而成的单词分析第一种方法 使用集合查看当前单词的分解手否存在#include<iostream>#include<algorithm>#include<set>#include<string>#include<string.h>#include<m...原创 2019-09-22 17:26:28 · 190 阅读 · 0 评论 -
restaurant LA 4851
题目大意有M*M网格,左下角(0,0),右上角(M-1,M-1).上面有n个餐厅,其中编号为1和2的分别是AB两宾馆的餐厅.对于一个位置,若存在与之前已有的任意餐厅位置相比,更靠近A或者B,就定义为”好位置”.问”好位置”的个数.(其中,两点间的距离为曼哈顿距离,即横纵坐标差的绝对值之和)分析主要是采用扫描线方法,在这里其实有一点不是很懂,为什么A和B的正上下不是好位置,不解```#inc...原创 2019-09-22 16:43:18 · 105 阅读 · 0 评论 -
LA 4726 平均值
题目大意给定一个长度为n的01序列选择一个长度至少为L的连续子序列,使得子序列中数值之和的平均值最小,选择尽量小尽量少的序列。分析这是一个好题 ,难点就在于单调队列的维护,删除上凸点,保留下凹点。原理见 周源大佬的数形结合上代码#include<iostream>#include<algorithm>#include<string.h>#d...原创 2019-09-22 16:38:19 · 185 阅读 · 0 评论 -
火势控制系统 LA 4356
题目大意平面上有n个目标点,你的任务是找出一个圆心在(0,0)点处的扇形2,至少覆盖K个点,,试求出最小的面积分析首先对这n个目标点求出至原点的距离以及角度,然后对这n个点进行排序后,依次使用每一种距离进行扫描,注意开而被数组 ,这个题目wrong了 几十次,就是因为对n和k的判定出了问题代码是参考大佬的转自大神代码子集有稍微修改了一下#include<iostream&g...转载 2019-09-22 16:32:24 · 137 阅读 · 0 评论 -
LA 2965侏罗纪
题目大意有n个大写字母组成的字符串选择尽量多的串使得每个大写字母能能够出现偶数次。n<20分析在一个字符串中每个字母出现的次数无关紧要重要的是字母出现的奇偶性,我们正好可以用二进制表示每个字符串的奇偶性奇数对应1 偶数对应0刘大神的代码一些地方不是特别懂,中途相遇法#include<iostream>#include<algorithm>#include...原创 2019-09-22 16:15:33 · 168 阅读 · 0 评论 -
UVA 10755废料堆 garbage Heap
题目大意有一个长方体形状的废料堆,由(A*B)*C个废料块组成,每一个废料块都有一个价值,现在想在其中找一个最大价值的长方体块分析首先,想一个正确但是低效的方法,枚举x,y,z的上下界坐标然后比较着这么多的长方体的价值和,而且每个长方体还需要n的三次方的时间累加价值和,显然太大;解决高维问题的常用方法就是降维,如果是一个二维情况,给定一个数字矩阵求最大的连续子矩阵,首先就是使用"前缀和"的...原创 2019-09-22 15:59:19 · 124 阅读 · 0 评论 -
LA 3695遥远的银河
题目大意给定平面上的n个点,找一个矩形,使得边界上包含尽量多的点。分析不难发现除非所有的点都在同一条直线上,否则矩阵的四条边至少会有一个点(一个角上的点同时算在两条边上).这样,我们枚举4条边界所穿过的点,然后统计点数,这样做的复杂符很高,数据量无法承受。和子序列一样我们考虑部分枚举,只枚举矩形的上下界。用其他方法定义左右边界。当一个矩形的上下边界确定后,我们来计算左右边界点。我们定义l...原创 2019-09-22 12:49:16 · 166 阅读 · 0 评论 -
LA 3029 最大子矩阵 city game
题目大意给定一个m*n的矩阵,其中一些池子是空地,其他事障碍,求出最大的空地面积并将结果乘以三。分析最常用的方法暴力枚举,枚举矩形的两个顶角坐标。,然后判断求面积,复杂度十分大,对于本题目的数据显然通过不了,我们采用扫描发法,把每个格子向上的连续空格看作一个悬线,并且用up(i,j),left(i,j),right(i,j分别表示可以向上的悬线长度,向左向右的最大边界,注意边界保留的是空地的...原创 2019-09-22 12:19:49 · 114 阅读 · 0 评论 -
LA 2678 subsequece 子序列
题目大意给定有n个正整数构成的序列和整数S,求长度最短的连续序列,使他们的和等于S分析首先想到的方法就是暴力枚举,,枚举起点和终点for (int i = 0; i < n; i++) for (int j = i; j < n; j++) { int sum = 0; for (int k = i; k <= j; k++) sum =...原创 2019-09-22 11:27:15 · 215 阅读 · 0 评论 -
LA3905 meteor流星
题目大意给定一个矩形照相机,还有哪个流星的起始位置和速度,求能可以照到最多流星的时刻。在边框上的不计入总数。分析不难发现流星的轨迹没有任何意义,有意义的只是流星在照相机内部出现的时间段,我们可以把每一个流星经过的时间转化为一个区间,这样的话问题就转化位在最多区间覆盖的点。即,求求出一个数t,使得包含的区间数最多。我们把"扫描线碰上一个左端点"和“扫描线遇到一个右端点作为”作为一个事件,扫...原创 2019-09-22 10:55:22 · 119 阅读 · 0 评论 -
LA3621 快速幂运算
题目大意给定正整数n和x,问最少需要几次乘除法可以得到x的n次方,每次可以乘上之前乘过的数分析运用迭代深搜,迭代深搜适用于那些所求值不大的情况给定的样例答案不大时应当考虑上代码/*理解错误:这个题目应该用广搜或者迭代深搜; 对于每一步来说,操作的步骤只有加+1或-1; 不是很懂;*/#include<iostream>#include<cstdio>...原创 2019-09-24 21:33:07 · 130 阅读 · 0 评论