贪心算法
文章平均质量分 55
Ustinian.'
撕破伤口、
展开
-
洛谷--P4779 【模板】单源最短路径(标准版)
单源最短路径题目来源一、基础dijkstra二、堆优化的dijkstra题目来源洛谷–P4779 【模板】单源最短路径(标准版)一、基础dijkstra基本思路:1.定义ans[100000],ans[i]代表到达i点的最小花费2.定义bool数组visit,代表是否来过这里2.ans[起点] = 0, 其余的赋值为inf3.定义一个curr变量,visit[current] = 1(访问过),代表现在的位置,初始值为起点。4.列举所有与curr相联通的的点,将这些点(i)的ans值更新原创 2022-04-09 15:37:12 · 669 阅读 · 0 评论 -
Gone Fishing(贪心)
题目描述约翰有h(1≤h≤16)个小时的时间,在该地区有n(2≤n≤25)个湖,这些湖刚好分布在一条路线上,该路线是单向的。约翰从湖1出发,他可以在任一个湖结束钓鱼。但他只能从一个湖到达另一个与之相邻的湖,而且不必每个湖都停留。假设湖i(i=1~n—1),以5分钟为单位,从湖i到湖i+1需要的时间用ti(0<ti≤192)表示。例如t3=4,是指从湖3到湖4需要花20分钟时间。已知在最初5分钟,湖i预计钓到鱼的数量为fi(fi≥0)。以后每隔5分钟,预计钓到鱼的数量将以常数di(di≥0)递减。如果某原创 2022-04-06 16:56:15 · 119 阅读 · 0 评论 -
Wooden Sticks(贪心)
题目描述现有n根木棒,已知它们的长度和重量。要用一部木工机一根一根地加工这些木棒。该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模版的。木工机需要的准备时间如下:(1)第一根木棒需要1min的准备时间;(2)在加工了一根长为l ,重为w的木棒之后,接着加工一根长为l ’ (l ≤ l’ ),重为 w’ ( w≤w’)的木棒是不需要任何准备时间的,否则需要一分钟的准备时间。给定n根木棒,找到最少的准备时间。例如现在有长和重分别为(4,9),(5,2),(2,1),(3,5)和(1原创 2022-04-04 08:55:18 · 581 阅读 · 0 评论 -
Crossing River(贪心)
【题目描述】几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间。【输入】输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间。【输出】输出t行数据,每行1个数,表示每组过河最少时间。【输入样例】141 2 5 10【输出样例】17题目分析这种过河问题求最少时间就本着能者多劳的原则去想就行。从一个人过河开始想,想到n个人就结束了。而这个题恰好也是这样。有以下四种情况:我们用数组a来储存这n个人的过河时间,然后从小到大排序。人数少于四个时很容原创 2022-04-02 20:46:27 · 265 阅读 · 0 评论 -
寻找平面上的极大点(贪心)
【题目描述】在一个平面上,如果有两个点(x,y),(a,b),如果说(x,y)支配了(a,b),这是指x≥a,y≥b;用图形来看就是(a,b)坐落在以(x,y)为右上角的一个无限的区域内。给定n个点的集合,一定存在若干个点,它们不会被集合中的任何一点所支配,这些点叫做极大值点。编程找出所有的极大点,按照x坐标由小到大,输出极大点的坐标。本题规定:n不超过100,并且不考虑点的坐标为负数的情况。【输入】输入包括两行,第一行是正整数n,表示是点数,第二行包含n个点的坐标,坐标值都是整数,坐标范围从原创 2022-04-02 20:26:09 · 282 阅读 · 0 评论 -
电池的寿命(贪心)
【题目描述】小S新买了一个掌上游戏机,这个游戏机由两节5号电池供电。为了保证能够长时间玩游戏,他买了很多5号电池,这些电池的生产商不同,质量也有差异,因而使用寿命也有所不同,有的能使用5个小时,有的可能就只能使用3个小时。显然如果他只有两个电池一个能用5小时一个能用3小时,那么他只能玩3个小时的游戏,有一个电池剩下的电量无法使用,但是如果他有更多的电池,就可以更加充分地利用它们,比如他有三个电池分别能用3、3、5小时,他可以先使用两节能用3个小时的电池,使用半个小时后再把其中一个换成能使用5个小时的电池,原创 2022-04-02 19:59:27 · 212 阅读 · 0 评论 -
书架(贪心)
【题目描述】John最近买了一个书架用来存放奶牛养殖书籍,但书架很快被存满了,只剩最顶层有空余。John共有N头奶牛(1≤N≤20,000),每头奶牛有自己的高度Hi(1≤Hi≤10,000),N头奶牛的总高度为S。书架高度为B(1≤B≤S<2,000,000,007)。为了到达书架顶层,奶牛可以踩着其他奶牛的背,像叠罗汉一样,直到他们的总高度不低于书架高度。当然若奶牛越多则危险性越大。为了帮助John到达书架顶层,找出使用奶牛数目最少的解决方案吧。【输入】第1行:空格隔开的整数N和B。第原创 2022-04-02 19:41:53 · 400 阅读 · 0 评论 -
Ride to Office(贪心)
【题目描述】起点与终点相隔4500米。现Charley 需要从起点骑车到终点。但是,他有个习惯,沿途需要有人陪伴,即以相同的速度, 与另外一个人一起骑。而当他遇到以更快的速度骑车的人时,他会以相应的速度跟上这个更快的人。先给定所有与Charley 同路的人各自的速度与出发时间,问Charley 以这种方式跟人,骑完4500米需要多少时间。得出的结果若是小数,则向上取整。【输入】输入若干组数据,每组数据第一行n(1≤n≤10000),n为0,表示输入结束,接着输入n行数据,每行2个数据,表示速度v和出发原创 2022-04-02 19:30:33 · 182 阅读 · 0 评论 -
装箱问题(贪心算法)
【题目描述】一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为11,22,33,44,55,66。这些产品通常使用一个66h的长方体包裹包装然后邮寄给客户。因为邮费很贵,所以工厂要想方设法的减小每个订单运送时的包裹数量。他们很需要有一个好的程序帮他们解决这个问题从而节省费用。现在这个程序由你来设计。【输入】输入文件包括几行,每一行代表一个订单。每个订单里的一行包括六个整数,中间用空格隔开,分别为11至66这六种产品的数量。输入文件将以6个0组成的一行结尾原创 2022-04-02 19:15:37 · 1295 阅读 · 0 评论 -
最大子矩阵(贪心)
【题目描述】已知矩阵的大小定义为矩阵中所有元素的和。给定一个矩阵,你的任务是找到最大的非空(大小至少是1×11×1)子矩阵。比如,如下4×4的矩阵0 -2 -7 09 2 -6 2-4 1 -4 1-1 8 0 -2的最大子矩阵是9 2-4 1-1 8这个子矩阵的大小是15。【输入】输入是一个N×N的矩阵。输入的第一行给出N(0<N≤100)。再后面的若干行中,依次(首先从左到右给出第一行的N个整数,再从左到右给出原创 2022-04-01 21:03:51 · 238 阅读 · 0 评论 -
An Easy Problem(贪心)
【题目描述】给定一个正整数N,求最小的、比N大的正整数M,使得M与N的二进制表示中有相同数目的1。举个例子,假如给定的N为78,其二进制表示为1001110,包含4个1,那么最小的比N大的并且二进制表示中只包含4个1的数是83,其二进制是1010011,因此83就是答案。【输入】输入若干行,每行一个数n(1≤n≤1000000),输入"0"结束。【输出】输出若干行对应的值。【输入样例】1234780【输出样例】245883解题思路这道题锻炼了一下二进制代码#原创 2022-04-01 20:34:41 · 233 阅读 · 0 评论 -
均分纸牌(贪心)
【题目描述】有n堆纸牌,编号分别为 1,2,…, n。每堆上有若干张,但纸牌总数必为n的倍数。可以在任一堆上取若干张纸牌,然后移动。移牌规则为:在编号为1的堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 n 的堆上取的纸牌,只能移到编号为n-1的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都一样多。例如 n=4,4堆纸牌数分别为: ① 9 ② 8 ③ 17 ④ 6移动3次可达到目的:从 ③ 取4张牌放到④(9 8 13 10原创 2022-04-01 19:51:11 · 189 阅读 · 0 评论 -
排队接水问题(贪心)
这里写目录标题1.一个水龙头2.多个水龙头1.一个水龙头题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。【输入】共两行,第一行为n(1≤n≤1000);第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。【输出】 有两行,第一行为一种排队顺序,即1到n的一种排列;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。【输入样例】【输出样例】291.9原创 2022-04-01 19:26:45 · 3919 阅读 · 0 评论 -
删数问题(贪心)
题目描述给定n位正整数a,去掉其中任意k≤n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。输入第1行是1个正整数a,第2行是正整数k。输出对于给定的正整数a,编程计算删去k个数字后得到的最小数。题解思路#include<iostream>#include<string >string a; //n位数aint k;cin>>a>>原创 2022-03-31 12:34:29 · 546 阅读 · 0 评论 -
背包问题(贪心)
题目描述给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 ,价值wi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值最大。有两类背包问题(根据物品是否可以分割, 如果物品不可以分割,称为0—1背包问题(动态规划); 如果物品可以分割,则称为背包问题(贪心算法)。题解思路数据结构struct bag{ int w; //物品的重量 int v; //物品的价值 double c; //性价比}a[1001]; //存放物品的数组排序因子(按性价比原创 2022-03-30 18:11:15 · 804 阅读 · 0 评论 -
活动安排问题(贪心)
题目描述活动安排问题就是要在所给的活动集合中选出最大的相容活动子集合,是可以用贪心算法有效求解的很好例子。该问题要求高效地安排一系列争用某一公共资源的活动。 贪心算法提供了一个简单、漂亮的方法使得尽可能多的活动能兼容地使用公共资源。设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si<fi。如果选择了活动i,则它在半开时间区间[si ,fi)内占用原创 2022-03-30 18:03:56 · 1994 阅读 · 0 评论