![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 76
KuB特洛夫斯基
该用户涉嫌装B,已被平台举报!
展开
-
【JAVA】求数列中相邻两数间不存在比两数大的情况数(Pro20211203)(IndexTree / DP)
【JAVA】求数列中相邻两数间不存在比两数大的情况数(Pro20211203)(IndexTree / DP)题目解题思路代码(IndexTree)代码(DP)题目身高各异的 N 个人按一定间隔站成一排,每个人都按照以下规则来监控他们能看到的人是否在做其他的事。规则:我和我要监控到的第 i 个人之间不能有人比我高,也不能有人比第 i 个人高。例如,根据下 [图] 可知,⑤ 号可以监控到 ③ 号,但无法监控到 ① 号,因为 ③ 号比 ⑤ 号高。假设如上 [图] 所示,一共站着八个人。从左向右原创 2021-12-23 12:14:27 · 260 阅读 · 0 评论 -
Index Tree特点及适用范围
Index Tree特点及适用范围特点:适用范围:个人总结,仅供参考!特点:空间复杂度:[2N, 4N]时间复杂度: Update:logN(单点更新) Query:2logN(一次区间查询)Index Tree是完美二叉树;Index Tree一定存在空间浪费(至少Tree[0]未使用);Index Tree的使用,仅仅是为了提升效率:只使用Index Tree的叶节点,就可以解决问题,但效率较低;一次区间查询:O(N) --> O(logN)(效率提升了);一次更新:O原创 2021-09-16 14:07:28 · 538 阅读 · 0 评论 -
拓扑排序特点及适用范围
拓扑排序特点及适用范围特点适用范围:特点拓扑排序是针对有向图的;做拓扑排序的图不一定是连通图,可能有多个连通分量;拓扑排序是一个动作,而不是结果;一个图的拓扑排序结果不存在,则该图存在环;一个图的拓扑排序结果存在,则:5.1. 图的拓扑排序结果可能有多个,但按字典排序的结果是唯一的;5.2. 至少有一个入度是0的点;5.3. 至少有一个出度是0的点;对于一个图的拓扑排序结果,如果新加上的边,是从前面的点指向后面的点,则新图仍然是无环图。适用范围:可判断有向图是否有环(拓扑排序结原创 2021-09-16 13:50:42 · 1824 阅读 · 0 评论 -
【JAVA】有向无环图到达固定点的最大深度及分值(Pro20210910)(拓扑排序)
【JAVA】有向无环图到达固定点的最大深度及分值(Pro20210910)(拓扑排序)题目思路代码题目密码:6667 竞赛(测试用例总数:40 个,1 秒 (C/C++),1.5 秒 (JAVA)/内存要求:256 M,堆栈 1 M)智宇决定参加在某星球举办的竞赛。整个竞赛场地共有 N 个关卡,分别从 1 到 N 进行编号,通过连接两个关卡的 M 条单行道连通这 N 个关卡。每个关卡只能经过一次,关卡 1 始终为终点。在这场竞赛中,智宇可以任意选择在哪个关卡出发,然后在到达终点前,获取尽量多的积原创 2021-09-13 15:58:23 · 391 阅读 · 0 评论 -
【JAVA】无向连通图到达所有点必须经过固定点成本之和的最小值(Pro20210903)(Dijkstra + DP)
【JAVA】无向连通图到达所有点必须经过固定点成本之和的最小值(Pro20210903)(Dijkstra + DP)题目思路代码题目略思路每次到达下一个点必须经过1号店,可以拆解为从当前点到1号点的最短路径,加上从1号点到目的地的最短路径。也就是说,整个过程可以分解为:1号点到剩余所有点:在下面会包含,不用单独列举(计算)2号点到剩余所有点:【2 --> 1 --> 3 --> 1 --> 4 --> 1 --> 5… --> N-1 -->原创 2021-09-08 10:48:55 · 192 阅读 · 0 评论 -
【JAVA】最大间隔限定的最大和(Pro20210827)(DP(IndexTree / PriorityQueue)
【JAVA】最大间隔限定的最大和(Pro20210827)(DP(IndexTree / PriorityQueue)题目思路代码(IndexTree)代码(PriorityQueue)题目Lia 在一个景点看到了由 N 个垫脚石组成的石桥。单纯地走过这些垫脚石感觉没有意思,所以她给每块垫脚石设置了一个分数,将踩到的所有石头上的分数全部加起来,想要得到一个最大分数。但是,为了让这件事更有意思,她决定按下列规则来过桥。第一块和最后一块垫脚石必须要踩。设定一个K值,下一块踩的石头与上一块踩的石头间相原创 2021-08-31 16:06:08 · 121 阅读 · 0 评论 -
【JAVA】连通图到达所有点的最小成本(Pro20210820)(Floyd + DFS)
【JAVA】连通图到达所有点的最小成本(Pro20210820)(Floyd + DFS)题目思路代码题目在 S 村,有 N 座房屋,通过 M 条道路连通,N 座房屋中的其中两个是餐厅。村民都在自己家里从餐厅订外卖,但全村只有一个外卖员,他要找出最快捷的外卖路径。如上 [图] 所示,蓝色的点代表居民房屋,橙色的点代表餐厅,绿色的点代表外卖员位置,直线边上的数字代表道路的长度。假设村民们在餐厅下单订购的外卖如上表所示。外卖员从 8 号屋出发 → 到 6 号餐厅取 4 号和 5 号屋的餐 → 送餐到 4原创 2021-08-31 08:53:09 · 739 阅读 · 0 评论 -
【JAVA】求有两次调整权值机会的最短路径(Pro20210813)(BFS(Dijkstra思想))
【JAVA】求有两次调整权值机会的最短路径(Pro20210813)(BFS(Dijkstra思想))題目:思路:代码:題目:假设有个国家有 N 座城市,通过 M 条道路连通,城市从 1 到 N 进行编号,每条道路上都会收取过路费。据说,这个国家每年的暑期会向全体市民发放两张过路费折扣券(每张券的折扣力度可能会不同)。John 住在 1 号城市,准备前往 N 号城市度假,想要使用折扣券确保支付最少的过路费。如上 [图] 所示,假设从 1 号城市出发,前往 8 号城市,收到的折扣券金额分别是 2 和原创 2021-08-27 15:19:31 · 116 阅读 · 0 评论 -
【JAVA】连续区间最大和(Pro20210806)(DP)
【JAVA】连续区间最大和(Pro20210806)(DP)题目思路代码题目假设 A[1…N] 是包含 N 个整数的数组。对数组发出 Q 个请求,每个请求都是一个索引对 (i, j),(每个请求都满足 i ≤ j)。对每个请求的回复是数组 A[1…N] 中除了 i 到 j 的区段之外的最大部分和(数组的连续子数组中和最大的值)。最大子数组至少要包含一个元素。最大子数组的和是存在于 i 元素左边或者 j 元素右边的元素之和。各个请求是独立的。也就是说,在一个请求中排除的区段不会影响到后续的请求。以如原创 2021-08-19 14:51:01 · 324 阅读 · 0 评论 -
【JAVA】两数组的元素差值小于K的情况数(Pro20210803)(二分查找 / 双指针)
【JAVA】两数组的元素差值小于K的情况数(Pro20210803)(二分查找 / 双指针)题目思路:代码(二分查找):代码(双指针):题目A 国与 B 国每年都会举办一场友谊赛。该友谊赛在两国之间已举办多年,比赛规则如下:比赛中,两国各派出 N 名参赛者,各国参赛者站成一排,面对面站立。然后,两国各派出站位相连的 K 名参赛者组成代表选手,作为一组进行比拼。比拼后,两国各自的 K 名选手返回初始位置,重新派出站位相连的 K 名选手组成队伍,进行多次比赛。注意,相同选手的组合仅能比拼一次。换句话说,如原创 2021-08-18 16:59:29 · 555 阅读 · 0 评论 -
【JAVA】Stars(POJ 2352)(IndexTree)
这里写自定义目录标题思路:代码(IndexTree):代码(BIT):题目地址:http://poj.org/problem?id=2481思路:题目要求的是每个等级的星星有几颗,那就需要先求出每颗行星的等级。根据题目内容,每颗星星的等级,是X坐标和Y坐标均小于等于自身坐标的星星数量。每颗星星的等级都需要算,那就存在计算先后的问题。那么,对于某一颗星,只要确保在计算它的等级的时候,已经计算的星星都不在这颗行星右侧(已经计算的星星的X坐标都小于等于当前星星的X坐标),那就只需要看在这些星星中,有多原创 2021-08-04 16:05:57 · 153 阅读 · 0 评论 -
【JAVA】Cows(POJ 2481)(IndexTree)
【JAVA】Cows(POJ 2481)(IndexTree)思路:代码:题目地址:http://poj.org/problem?id=2481思路:能量比当前牛大的牛,则吃草区间是大于当前牛的。即:起始坐标小于等于当前牛的起始坐标且结束坐标大于等于当前牛的结束下标的牛的数量,减去和当前牛的吃草区间完全相等的牛的数量即可。首先,要确保起始坐标小于等于当前牛的,则根据起始下标升序排序,就可以确保在处理当前牛时,已经被处理的牛的起始下标小于等于当前牛的起始下标。其次,在已经被处理的牛中,寻找结束下标原创 2021-08-04 12:39:49 · 140 阅读 · 0 评论 -
【JAVA】求数组连续区间内最大值与最小值的差不大于K的最大区间长度 Pro20210705 (双指针+优先级队列 / 双指针+IndexTree)
求数组连续区间内最大值与最小值的差不大于K的最大区间长度 Pro20210705题目方法一:双指针+优先级队列方法二:双指针+IndexTree题目给定数组,求在数组的连续区间内最大值与最小值的差不大于K的最大区间长度。输入:测试用例数量T第1个测试用例数组长度N 差值K第1个测试用例数组第2个测试用例数组长度N 差值K第2个测试用例数组…方法一:双指针+优先级队列思路:既然是连续区间,那么在下标left和下标right区间内,元素都是计算范围内的,所以用双指针指定连续区原创 2021-07-14 15:23:00 · 1144 阅读 · 1 评论 -
【JAVA】每类各选一个后求最大最小值差值的最小值(Pro20210802)(优先级队列 / IndexTree)
【JAVA】每类各选一个后求最大最小值差值得最小值(Pro20210802)(优先级队列 / IndexTree题目:思路:代码(优先级队列):代码(IndexTree):题目:Lin 打算在自己住的村子里建 N 个不同的便利设施。每个便利设施有 K 种建造方法,设施的便利性因建造方法而异。因此,Lin 尝试从 K 种方法中各选择一种来建造这 N 个便利设施。当 N 个便利设施中便利性最高和最低的差值越小,便利设施越便于使用。Lin 希望算出最小的差值。假设便利设施数量 N 为 3,各设施的建造方原创 2021-08-03 17:38:11 · 336 阅读 · 0 评论 -
【JAVA】连通分量中的背包问题(Pro20210712)(BFS + DP)
【JAVA】连通分量中的背包问题(Pro20210712)(BFS + DP)题目思路代码题目S 公司的网络管理员琳收到了一通紧急来电。来电告知公司内部设备连接的网络中发现了恶意代码,必须马上采取相应措施。S 公司有 N 台设备,通过 M 根线路连接,所以如果其中一台设备感染恶意代码,其他设备也会通过连接网络感染上恶意代码。目前,已有 K 台设备感染恶意代码,代码扩散危机迫在眉睫。受感染的设备需要立即处理,但在目前的情况下,最多只能处理三台设备。保受感染的设备数量尽可能少的情况下,帮助琳确定要处理的原创 2021-08-03 11:40:42 · 134 阅读 · 0 评论 -
【Java】求连通图中的K个连通分量权值之和的最小值Pro20210720(最小生成树(MST) / 克鲁斯卡尔 Kruskal)
【Java】求连通图中的K个连通分量权值之和的最小值Pro20210720(克鲁斯卡尔 Kruskal)题目思路代码(调整前):优化后(求MST时,求出(N - 1 - K + 1)条边即可):代码(优化后):题目琳恩正在计划前往S国进行K次旅行。S国有N座城市,城市之间通过M条道路连接着。琳恩可从任意一座城市前往另一座城市,移动时,每条道路均会产生通行费,所以她需要支付费用。琳恩计划在K次旅行期间,通过利用最少的道路来访问N座城市,而每座城市至少需要访问一次。如果按照如上的方式旅行时,存在多种方案原创 2021-08-02 14:49:41 · 385 阅读 · 0 评论 -
【JAVA】求飞机游戏中最小横向移动次数Pro20210719(DP / BFS(Dijkstra思想))
题目整个游戏地图由M个横向格子和N个纵向格子组成,地图上的格子有可能是空的,也可能有障碍物,我们需要在这个地图中进行滚动游戏。你能看到的游戏屏幕的横向和纵向大小都是M个格子。地图中,从顶部开始的M行不存在障碍物。游戏开始时,在屏幕上可以看到整个地图中最底部的M个纵向和横向格子,你的飞船位于屏幕左下方(即整个地图的左下方格子)的格子。你的飞船将一直位于游戏屏幕的末行,游戏中的每一步,地图都会向下滚动一行。换句话说,每进行一步,游戏屏幕中显示的地图都会向上移动一行。由于飞船一直位于屏幕末行,所以它在整个地原创 2021-07-28 13:51:02 · 175 阅读 · 0 评论 -
【JAVA】求可汇合后同行的两人到达固定终点的最小成本Pro20210622(最短路径 迪杰斯特拉(Dijkstra))
题目当前有一个N行M列网格模型的国家。每个单元格代表着一座城市。每次通过一座城市时,都会产生一笔通行费。今年夏天将在这个国家的某座城市举办一个盛大的庆典活动。约翰和克洛伊为了参加这个庆典,他们需要各自从自己居住的城市出发,前往到举办庆典活动的城市。前往时,可以移动到上下左右相邻的城市,一旦离开一座城市,就需要立即支付通行费。此外,由于通行费是按团体收费而不是按人数收费,因此在移动的途中,在某一座城市碰面,然后一同出行要比单独出行花费的更少。如上图所示,假设约翰居住在[2,2],克洛伊居住在[2,5]原创 2021-07-26 16:40:59 · 279 阅读 · 0 评论 -
【JAVA】求数组前K个数中固定位置元素之和Pro20210524 (优先级队列 / IndexTree)
【JAVA】求数组前K个数中固定位置元素之和Pro20210524题目方法一:优先级队列方法二:IndexTree题目用户用餐后会在外卖应用上对食物的满意度进行评价。(满意度分数始终大于0)研究满意度的专家称,当把满意度分数按照从小到大的顺序排列时,某个(X/Y)位置的满意度非常重要。因此作为管理满意度的负责人丽雅,她想逐个接收分数后进行处理。每当接收的满意度为Y的倍数时,会调查X/Y位置的满意度并进行记录。(如果X=3,Y=4的情况,满意度有4个时取第三个分数,有八个时取第六个分数。)然而,有时原创 2021-07-21 11:12:01 · 171 阅读 · 0 评论 -
【JAVA】POJ 1995 Raising Modulo Numbers (快速冪)
【Java】POJ 1995 Raising Modulo Numbers 快速冪思路思路水题,每项用快速幂求解即可。// An highlighted blockimport java.io.BufferedReader;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { static int Z, M, H, B; static long ASW, TMP_ASW原创 2021-07-20 13:38:49 · 93 阅读 · 0 评论