算法
Ustinian.'
撕破伤口、
展开
-
基本算法--暴力算法
什么是暴力破解法?暴力破解法,就是把所有条件,相关情况统统考虑进去,让计算机进行检索,指导得出与之所有条件符合的结果(但是,暴力破解法对计算机资源耗费严重,如果条件太复杂,运算速度缓慢,为了解决这一问题,我们可以事先把与之不相关的条件进行限制,减少计算机的运算量)例如扫雷-蓝桥杯#include <iostream>#include<bits/stdc++.h>#define N 1001#define INF 0x3f3f3f3f#define IOS ios.原创 2022-03-29 11:53:57 · 2561 阅读 · 0 评论 -
C++函数未运行,且显示Process returned -1073741571 (0xC00000FD)
我是在codeblocks中写了一个c++代码,出现的这个问题也是有点莫名其妙,因为没有编译错误也没用运行时错误,就是一个函数不执行了,经过我的调试后发现原因是:在函数内部初始化了一个相当大的数组,导致内存溢出,从而导致整个函数(即便是在初始化这个数组之前的代码)未执行,并导致整个程序直接退出!但是,这里的重点不在于定义了一个相当大的数组,而在于内存溢出!不仅仅是这一种情况,只要是出现了这种情况都应该去检查一下自己的代码是否出现了纰漏,是否哪个地方访问了不该访问的地方。...原创 2022-03-29 11:45:15 · 3154 阅读 · 0 评论 -
灌溉--蓝桥杯(枚举)
灌溉–原题题目描述小蓝负责花园的灌溉工作。花园可以看成一个 nn 行 mm 列的方格图形。中间有一部分位置上安装有出水管。小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。给定花园水管的位置,请问 kk 分钟后,有多少个方格被灌溉好?输入描述输入的第一行包含两个整数 n, mn,m。第二行包含一个整数 t原创 2022-03-29 11:16:31 · 161 阅读 · 0 评论 -
基本算法--枚举算法
枚举算法算法思想定义思想基本思路算法步骤典型例题1.模糊数字2.m钱买n鸡问题3. 真假银币算法思想定义在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么该结论是可靠 的,这种归纳方法叫做枚举法。思想将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,舍弃不合适的。基本思路(1)确定枚举对象、范围和判定条件。(2)逐一枚举可能的解并验证每个解是否是问题的解。算法步骤(1)确定解题的可能范围,不能遗漏任何一个真正解,同时避免原创 2022-03-29 11:09:42 · 414 阅读 · 0 评论 -
跳跃--蓝桥杯(深搜+dp)
题目描述输入描述输出描述输入样例3 5-4 -5 -10 -3 17 5 -9 3 -1010 -2 6 -10 -4输出样例15题目分析这道题数据结构不大,可以采用dfs;也可以dp;能走的距离只有9个,向斜下方走两格不可以(虽然是距离小于三),这里题目好像有些问题代码dfs#include<iostream>#include<cmath>#include<algorithm>using namespace std;i原创 2022-03-28 18:39:28 · 89 阅读 · 0 评论 -
Dividing(dp)
题目描述Marsha和Bill搜集到一些大理石块,他们想要平均分配这些石块。如果每块石头的价值都一样,那么事情显得异常简单。但是一些大理石块比较大,或更漂亮一些。Marsha和Bill给每块大理石分配一个价值:从数字1至6。 现在他们尝试分配石块,使得每人得到的大理石块总价值相同。他们明白就这样分配大理石块仍然是很困难的(即使所有大理石块的总价值是偶数)。例如,价值为1的大理石块一个、价值为3的大理石块一个,和价值为4的大理石块两个,他们就无法把大理石块按总价值平分。因此他们请你写一个程序,判断是原创 2022-03-28 10:13:54 · 229 阅读 · 0 评论 -
Human Gene Functions(dp)
题目描述众所周知,人类基因可以认为是一个基因序列,包含四种核苷酸,分别用A,C,T和G四个字母简单地表示。生物学家对鉴别人类基因并确定他们的功能很感兴趣,因为这对诊断人类疾病和开发新药很有用。……你的任务是编写一个程序,按以下规则比较两个基因并确定它们的相似程度。给出两个基因AGTGATG和GTTAG,他们有多相似呢?测量两个基因相似度的一种方法称为对齐。使用对齐方法,可以在基因的适当位置插进空格,让两个基因的长度相等,然后根据基因分值矩阵计算分数。例如,给AGTGATG插入一个空格,就得到AGT原创 2022-03-28 10:05:07 · 559 阅读 · 0 评论 -
合唱队形(动态规划)
【题目描述】N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形。合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为T1,T2,…,TK,则他们的身高满足T1<T2<…<Ti,Ti>Ti+1>…>TK(1≤i≤K)。你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。【输入】输入的第一行是一个整数N(2≤N≤100),表示同学的总数。第二行有n个原创 2022-03-27 14:56:41 · 678 阅读 · 0 评论 -
挖地雷(动态规划)
【题目描述】在一个地图上有n个地窖(n≤200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,且保证都是小序号地窖指向在序号地窖,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。【输入】第一行:地窖的个数;第二行为依次每个地窖地雷的个数;下面若干行:xi yi //表示从xi可到yi,xi<yi原创 2022-03-27 13:24:04 · 797 阅读 · 0 评论 -
拦截导弹(动态规划--最大递增递减子序列)
【题目描述】某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统。【输入】输入导弹依次飞来的高度。【输出】第原创 2022-03-27 11:36:57 · 161 阅读 · 0 评论 -
最长不下降序列(动态规划)
【题目描述】设有由n(1≤n≤200)个不相同的整数组成的数列,记为:b(1)、b(2)、……、b(n)且b(i)≠b(j)(i≠j),若存在i1<i2<i3<…<ie 且有b(i1)<b(i2)<…<b(ie)则称为长度为e的不下降序列。程序要求,当原数列出之后,求出最长的不下降序列。例如13,7,9,16,38,24,37,18,44,19,21,22,63,15。例中13,16,18,19,21,22,63就是一个长度为7的不下降序列,同时也有7 ,9,原创 2022-03-27 11:17:42 · 2699 阅读 · 0 评论 -
2的幂次方表示(递归)
【题目描述】任何一个正整数都可以用2的幂次方表示。例如:137=27+23+20同时约定方次用括号来表示,即ab可表示为a(b)。由此可知,137可表示为:2(7)+2(3)+2(0)进一步:7=22+2+20(21用2表示)3=2+20所以最后137可表示为:2(2(2)+2+2(0))+2(2+2(0))+2(0)又如:1315=210+28+25+2+1所以1315最后可表示为:2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)【输入】一原创 2022-03-24 21:58:22 · 483 阅读 · 0 评论 -
数的计数(递推)
【题目描述】我们要求找出具有下列性质数的个数(包括输入的自然数n)。先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:不作任何处理;在它的左边加上一个自然数,但该自然数不能超过原数的一半;加上数后,继续按此规则进行处理,直到不能再加自然数为止。【输入】自然数n(n≤1000)。【输出】满足条件的数。【输入样例】6【输出样例】6提示:满足条件的数为 6、16、26、126、36、136解题思路:暴力出奇迹#include<iostream>原创 2022-03-24 20:17:16 · 399 阅读 · 0 评论 -
集合的划分(递归)
【题目描述】设S是一个具有n个元素的集合,S=〈a1,a2,……,an〉,现将S划分成k个满足下列条件的子集合S1,S2,……,Sk且满足:1.Si≠∅2.Si∩Sj=∅ (1≤i,j≤k,i≠j)3.S1∪S2∪S3∪…∪Sk=S则称S1,S2,……,Sk是集合S的一个划分。它相当于把S集合中的n个元素a1,a2,……,an放入k个(0<k≤n<30)无标号的盒子中,使得没有一个盒子为空。请你确定n个元素a1,a2,……,an放入k个无标号盒子中去的划分数S(n,k)。【输入】给出n和k。原创 2022-03-24 20:06:25 · 1181 阅读 · 0 评论 -
踩方格(递推)
【题目描述】有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上;b、走过的格子立即塌陷无法再走第二次;c、只能向北、东、西三个方向走;请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有一步不一样,即被认为是不同的方案。【输入】允许在方格上行走的步数n(n≤20)。【输出】计算出的方案数量。【输入样例】2【输出样例】7【解题思路】解决这个题,使用递推思想当n=1的时候,向上有1一种走法,向左有1原创 2022-03-24 19:37:25 · 909 阅读 · 0 评论 -
放苹果(递推)
【题目描述】把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。【输入】第一行是测试数据的数目t(0≤t≤20)。以下每行均包含二个整数M和N,以空格分开。1≤M,N≤10。【输出】对输入的每组数据M和N,用一行输出相应的K。【输入样例】17 3【输出样例】8#include <iostream>#include<bits/stdc++.h>#define N 1001#原创 2022-03-24 09:00:09 · 165 阅读 · 0 评论 -
过河卒(递推)
【题目描述】棋盘上A点有一个过河卒,需要走到目标B点。卒行走的规则:可以向下、或者向右。同时在棋盘上的某一点有一个对方的马(如C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点,如图3-1中的C点和P1,……,P8,卒不能通过对方马的控制点。棋盘用坐标表示,A点(0,0)、B点(n, m) (n,m为不超过20的整数),同样马的位置坐标是需要给出的,C≠A且C≠B。现在要求你计算出卒从A点能够到达B点的路径的条数。【输入】给出n、m和C点的坐标。【输出】从A点能够到达B点的路径的条数。原创 2022-03-23 09:31:11 · 585 阅读 · 0 评论 -
机器分配(dp)
【题目描述】总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M.【输入】第一行有两个数,第一个数是分公司数N,第二个数是设备台数M;接下来是一个N*M的矩阵,表明了第 I个公司分配 J台机器的盈利。【输出】第一行输出最大盈利值;接下N行,每行有2个数,即分公司编号和该分公司获得设备台数。【输入原创 2022-03-22 22:21:00 · 301 阅读 · 0 评论 -
数字三角形(dp)
【题目描述】观察下面的数字金字塔。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以从当前点走到左下方的点也可以到达右下方的点。在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。【输入】第一个行包含R(1≤ R≤1000),表示行的数目。后面每行为这个数字金字塔特定行包含的整数。所有的被供应的整数是非负的且不大于100。【输出】单独的一行,包含那个可能得到的最大的和。【输入样例】51311 812 7 266 14 15 8原创 2022-03-22 21:55:05 · 194 阅读 · 0 评论 -
潜水员(二维费用的背包问题)
【题目描述】潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种的数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?例如:潜水员有5个气缸。每行三个数字为:氧,氮的(升)量和气缸的重量:3 36 12010 25 1295 50 2501 45 1304 20 119如果潜水员需要5升的氧和60升的氮则总重最小为249(1,2或者4,原创 2022-03-22 17:54:30 · 158 阅读 · 0 评论 -
混合三种背包问题
【题目描述】一个旅行者有一个最多能装V公斤的背包,现在有n件物品,它们的重量分别是W1,W2,…,Wn,它们的价值分别为C1,C2,…,Cn。有的物品只可以取一次(01背包),有的物品可以取无限次(完全背包),有的物品可以取的次数有一个上限(多重背包)。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。【输入】第一行:二个整数,M(背包容量,M≤200),N(物品数量,N≤30);第2…N+1行:每行三个整数Wi,Ci,Pi,前两个整数分别表示每个物品的重量,价值,第三个整原创 2022-03-22 17:51:37 · 424 阅读 · 0 评论 -
庆功会(多重背包)
【题目描述】为了庆贺班级在校运动会上取得全校第一名成绩,班主任决定开一场庆功会,为此拨款购买奖品犒劳运动员。期望拨款金额能购买最大价值的奖品,可以补充他们的精力和体力。【输入】第一行二个数n(n≤500),m(m≤6000),其中n代表希望购买的奖品的种数,m表示拨款金额。接下来n行,每行3个数,v、w、s,分别表示第I种奖品的价格、价值(价格与价值是不同的概念)和能购买的最大数量(买0件到s件均可),其中v≤100,w≤1000,s≤10。【输出】一行:一个数,表示此次购买能获得的最大的价值(原创 2022-03-22 16:57:46 · 309 阅读 · 0 评论 -
三类背包问题
三类背包问题1.0-1背包题目基本思路优化空间复杂度初始化的细节问题样例代码小结2.完全背包题目基本思路转化为01背包问题求解O(VN)的算法样例代码总结3.多重背包题目基本思路转化为01背包问题求解1.0-1背包题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。基本思路这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。原创 2022-03-22 11:27:50 · 468 阅读 · 0 评论 -
背包九讲(dp)
背包九讲https://www.kancloud.cn/kancloud/pack/70125原创 2022-03-21 20:25:55 · 285 阅读 · 0 评论 -
0-1背包问题
概念描述给定一个物品集合s={1,2,3,…,n},物品i的重量是wi,其价值是vi,背包的容量为W,即最大载重量不超过W。在限定的总重量W内,我们如何选择物品,才能使得物品的总价值最大。如果物品不能被分割,即物品i要么整个地选取,要么不选取;不能将物品i装入背包多次,也不能只装入部分物品i,则该问题称为0—1背包问题。如果物品可以拆分,则问题称为背包问题,适合使用贪心算法。解题思路假设xi表示物品i装入背包的情况,xi=0,1。当xi=0时,表示物品没有装入背包;当xi=1时,表示把物品装原创 2022-03-17 22:12:58 · 401 阅读 · 0 评论 -
最大字段和(动态规划)
题目描述给定由n个整数(包含负整数)组成的序列a1,a2,…,an,求该序列子段和的最大值。当所有整数均为负值时定义其最大子段和为0。所求的最优值为:例如,当(a1,a2, ……a7,a8)=(1,-3, 7,8,-4,12, -10,6)时,最大子段和为:计算最优值#define NUM 1001int a[NUM];int MaxSum(int n){ int sum=0; int b=0; for (int i=1;i<=n;i++) { if (b>原创 2022-03-17 22:06:28 · 700 阅读 · 0 评论 -
最长公共子序列(动态规划)
概念1.若给定序列X={x1,x2,…,xm},则另一序列Z={z1,z2,…,zk},是X的子序列是指存在一个严格递增下标序列{i1,i2,…,ik}使得对于所有j=1,2,…,k有:zj=xij。例如,序列Z={B,C,D,B}是序列X={A,B,C,B,D,A,B}的子序列,相应的递增下标序列为{2,3,5,7}。2.给定2个序列X和Y,当另一序列Z既是X的子序列又是Y的子序列时,称Z是序列X和Y的公共子序列。3.给定2个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和原创 2022-03-17 22:00:41 · 609 阅读 · 0 评论 -
矩阵连乘(动态规划)
【题目描述】输入:n个矩阵A1,A2,…,An,其中Ai的维数为pi-1×piAi 和Ai+1是可乘的输出:连乘积A1A2A3…An优化目标:最小计算代价(最优的计算次序)矩阵乘法的代价:乘法次数若A 是p ×q 矩阵,B 是q ×r 矩阵,则A ×B 的代价是pqr因为矩阵乘法满足结合律,因此矩阵连乘可以由不同的计算次序,这种计算次序可以用加括号来表示。三个矩阵A1: 10×100, A2: 100×5,A3: 5×50(A1A2)A3代价:10×100×5+10×5×50=7500原创 2022-03-16 23:32:14 · 1013 阅读 · 0 评论 -
加快cin与cout的速度
#include<bits/stdc++.h>using namespace std;int main(){ sync_with_stdio(false); //代码 }原创 2022-03-15 11:05:31 · 570 阅读 · 2 评论 -
数据结构-排序算法
数据结构排序算法一.插入排序1.直接插入排序2.希尔排序二.交换排序1.起泡排序2.希尔排序三.选择排序1.简单选择排序堆排序一.插入排序1.直接插入排序//1依次将带排序序列的每个记录插入到已经排好的序列中知道全部序列都排好序void insertsort(int r[],int n){ int i,j; for(i=2;i<=n;i++) { r[0]=r[i]; for(j=i-1;j>0&&r[0]<原创 2022-03-14 15:41:30 · 1187 阅读 · 0 评论 -
购票排队(递归)
描述一场球赛开始前,售票工作正在紧张进行中。 每张球票为50元, 有m+n个人排队等待购票, 其中有m 个人手持50元的钞票, 另外n个人手持100元的钞票。 求出这m+n个人排队购票,使售票处不至出现找不开钱的局面的不同排队种数 。(约定:开始售票时售票处没有零钱;拿同样面值钞票的人对换位置为同一种排队。)输入输入 m,n(m 持有50元的人数,n持有100元的人数)输出m+n个人的排队种数样例输入1 1样例输出1#include<iostream>using na原创 2022-03-13 18:43:36 · 1847 阅读 · 0 评论 -
放苹果(递归)
问题描述把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问有多少种不同的分法?(注:5,1,1和1,1,5是同一种分法)输入苹果个数m 和盘子个数n(0<=M,1<=N<=10)输出不同的放法数目样例输入7 3样例输出8解题分析:设f(m,n)为m个苹果,n个盘子的放法数目,则先对n作讨论,1.当n>m:则必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响。即 if(n>m) f(m,n) = f(m,m)2.当n <原创 2022-03-13 11:02:02 · 2688 阅读 · 0 评论 -
寻找中位数 (快速排序版)
描述在N(1 <= N <= 100001 且N为奇数)个数中,找到中位数。输入第1行:N第2行:N个整数输出输入的第2行N个整数的中位数。样例输入52 4 1 3 5样例输出3提示若使用时间复杂度大于 O(NlogN)的排序算法,会返回 Time Limit Exceeded。#include<iostream>using namespace std;void q_sort(int *a, int l, int r){ if(l<r原创 2022-03-13 10:22:59 · 1122 阅读 · 2 评论 -
昆虫繁殖(递推)
【题目描述】科学家在热带森林中发现了一种特殊的昆虫,这种昆虫的繁殖能力很强。每对成虫过x个月产y对卵,每对卵要过两个月长成成虫。假设每个成虫不死,第一个月只有一对成虫,且卵长成成虫后的第一个月不产卵(过x个月产卵),问过z个月以后,共有成虫多少对?0≤x≤20,1≤y≤20,X≤z≤50。【输入】x,y,z的数值。【输出】过z个月以后,共有成虫对数。【输入样例】1 2 8【输出样例】371.这道题首先得注意开long long2.这有两个变量,一个是虫卵,一对是成虫。分别用a[]、原创 2022-03-12 22:44:39 · 756 阅读 · 0 评论 -
取余运算(分治+求解高精度问题)
#include<iostream>#include<algorithm>#include <stdio.h>using namespace std;int mod(long long a,long long p,long long k){ if(p==1)return a%k; if(p%2)return mod(a%k,p-1,k)*a%k;//p是奇数 else return mod((a*a)%k,p/2,k);//p是偶数}int ma...原创 2022-03-07 11:03:55 · 204 阅读 · 0 评论 -
整数因子分解(递归)
大于1的正整数 n 都可以分解为 n = x1 * x2 * … * xm, 每个xi为大于1的因子,即1<xi<=n 。例如:当n=12时,共有8种不同的分解式:(1不考虑)12 = 1*212 = 6*212 = 4*312 = 3*412 = 3*2*212 = 2*612 = 2*3*212 = 2*2*3对于给定正整数n,计算n共有多少种不同的分解式。此题因子讲顺序的.第一个因子可能是2~n之间的数.比如对12而言,第一个因子可能是2,3,4,6,12.将第原创 2022-03-07 10:57:12 · 2172 阅读 · 0 评论 -
半数集问题(递归+记忆化搜索)
给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:(1) n ∈set(n);(2) 在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;(3) 按此规则进行处理,直到不能再添加自然数为止。以6为例子,6,6前面可以加1,2,3生成16,26,36,26前面可以加1生成126,同理36生成136.所以6的半数集元素个数为6分别是6,16,26,36,126,136以12为例子,只加一个数字产生的元素有612,512,412,312,212,112。因为之后加的数原创 2022-03-07 10:41:30 · 783 阅读 · 1 评论 -
士兵排队问题(排序算法求中位数)
在一个划分成网格的操场上,n个士兵散乱地站在网格点上。网格点用整数坐标(x,y)表示。士兵们可以沿网格边往上、下、左、右移动一步,但在同一时刻任一网格点上只能有一名士兵。按照军官的命令,士兵们要整齐地列成一个水平队列,即排列成(x,y),(x+1,y),…,(x+n-1,y)。如何选择x和y的值才能使士兵们以最少的总移动步数排成一行。编程计算使所有士兵排成一行需要的最少移动步数。输入格式:第1行是士兵数n,1≤n≤10000。接下来n行是士兵的初始位置,每行有2个整数x和y,-10000≤x,y≤10原创 2022-03-07 10:33:05 · 1351 阅读 · 1 评论 -
输油管道问题(利用分治算法计算中位数)
【题目描述】某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有n 口油井的油田。从每口油井都要有一条输油管道沿最短路经(或南或北)与主管道相连。如果给定n口油井的位置,即它们的x 坐标(东西向)和y 坐标(南北向),应如何确定主管道的最优位置,即使各油井到主管道之间的输油管道长度总和最小的位置? 证明可在线性时间内确定主管道的最优位置。给定n口油井的位置, 计算各油井到主管道之间的输油管道最小长度总和。输入格式:输入的第1 行是油井数n,1<=n<=10000。接下来n 行是原创 2022-03-07 10:19:53 · 1146 阅读 · 0 评论 -
数字三角形问题(深度优先搜索 与 记忆化搜索)
题目描述贪心算法显然不成立(局部)用数组递推的方法#include <algorithm>#include <bitset>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <deque>#include <functional>#include <iostream>#i原创 2022-03-04 22:49:56 · 780 阅读 · 0 评论