自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 1557. 【USACO 2021 December Bronze】Walking Home

第七个子测试用例中,Bessie 的六条可能的路线为 DDRDRR,DDRRDR,DDRRRD,RRDDDR,RRDDRD 和 RRDRDD。可以发现,路径可以由路径的转折点(即图中紫色三角形所框出的点)唯一确定,只需枚举矩阵中心 (n−1)×(n−1) 的范围即可。分析数据范围,发现 K≤3。由于 K 只有 K=1,K=2,K=3 三个取值,可以分别枚举 K=1,K=2,K=3 的情况。第三个子测试用例中,Bessie 的六条可能的路线为 DDRR,DRDR,DRRD,RDDR,RDRD 和 RRDD。

2025-03-05 20:41:49 566

原创 1554. 【USACO 2023 December Bronze】Candy Cane Feast 拐杖糖盛宴

然后,奶牛们会按照输入中的顺序一头接一头地排好队,走到拐杖糖前,每头奶牛都会把糖吃到自己身高的位置(因为它们够不到更高的地方)。即使奶牛们吃掉了糖的一部分,糖也会继续悬挂在一开始的地方,不会再下放。如果糖的底部位置已经超过了某些奶牛的身高,那么奶牛有可能在轮到自己的时候什么都吃不到。每头奶牛吃完后,奶牛的身高会按照它们吃掉的糖的长度增长(每吃掉 1 单位长度的糖,就长高 1 单位),然后 FJ 会挂起下一条拐杖糖,奶牛们会再次重复这个过程(也就是 1 号奶牛会再次排第一开始吃下一条糖)。

2025-03-05 20:32:30 376

原创 1552. 【USACO 2021 December Bronze】Lonely Photo

Farmer John 最近购入了 N 头新的奶牛(3≤N≤5×10^5),每头奶牛的品种是更赛牛(Guernsey)或荷斯坦牛(Holstein)之一。然而,他不想拍摄这样的照片,其中只有一头牛的品种是更赛牛,或者只有一头牛的品种是荷斯坦牛——他认为这头奇特的牛会感到孤立和不自然。在为每个连续不少于三头奶牛的序列拍摄了一张照片后,他把所有「孤独的」照片,即其中只有一头更赛牛或荷斯坦奶牛的照片,都扔掉了。如果队伍中的第 i 头奶牛是更赛牛,则字符串的第 i 个字符为 G。(即只出现一次的那个字符的位置)。

2025-03-05 20:26:34 301

原创 1555. 【USACO 2023 December Bronze】Cowntact Tracing 2 密接追踪2

农夫约翰(FJ)有 N 头奶牛(1≤N≤3×105)。不幸的是,一种疾病在整个奶牛群中蔓延。一开始,某些奶牛被疾病感染。每天晚上,一头被感染的奶牛会将疾病传染给左右两边的奶牛(如果有的话)。奶牛一旦被感染,就会一直保持被感染的状态。过了不知道多少个夜晚后,FJ 意识到问题已经失控,于是他对奶牛们进行了检测,确定了哪些奶牛感染了疾病。请帮他找出一开始的时候最少有多少头奶牛感染了疾病。

2025-03-05 20:24:04 296

原创 1007. 【USACO题库】1.2.1 Milking Cows 挤牛奶

这道题的话,我们先弄清楚求什么,据题意我们知道要求的是至少一人挤奶时间段最大值与空闲时间段最大值,我们一开始可以想到线段树,但无奈,所需空间太大,所以我们就用到了离散化,我们将每个时间段离散化成一个点,点值为时间段长短,但为了更容易计算,我们将空闲时间段设为时间段长度的负值,这样在线段树中我们就可以直接维护两个值,一个是区间最大值,另一个是区间最小值,只要建树就行了,最后输出根节点的最大值与最小值的负数就可以。接下来 N 行,每行两个小于 106 的非负整数,表示一位农民挤奶的开始时刻与结束时刻。

2025-02-04 21:11:46 278

原创 1006. 【USACO题库】1.3.3 Calf Flac

据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文。你的工作就是去这些牛制造的奇观(最棒的回文)。在寻找回文时不用理睬那些标点符号、空格(但应该保留下来以便做为答案输出),只用考虑字母'A'-'Z'和'a'-'z'。要你寻找的最长的回文的文章是一个不超过20,000个字符的字符串。我们将保证最长的回文不会超过2,000个字符(在除去标点符号、空格之前)。

2025-02-04 21:04:34 258

原创 1005. 【USACO题库】1.3.2 Barn Repair修理牛棚

在一个暴风雨的夜晚,农民约翰的牛棚的屋顶、门被吹飞了。他的新木材供应者将会供应他任何他想要的长度,但是供应者只能提供有限数目的木板。C(1 <= C <=S) 牛棚里牛的数目,和牛所在的牛棚的编号stall_number(1 <= stall_number <= S),计算拦住所有有牛的牛棚所需木板的最小总长度。我们可以先假设只有一块木板从编号最小的牛棚一直铺到编号最大的牛棚,然后断开m-1处。自然要按相邻牛棚的编号差从大到小断开才能使我们断开的地方可以有效节省木板长度(因为中间省去的要更多)

2025-02-04 21:01:53 308

原创 1004. 【USACO题库】1.3.1 Mixing Milk混合牛奶

给出快乐牛奶制造者的每日的牛奶需求,连同每个农民的可提供的牛奶量和每加仑的价格,请计算快乐的牛奶制造者所要付出钱的最小值。Ai(0 <= Ai <= 2,000,000)是农民 i 一天能卖给快乐的牛奶制造者的牛奶数量。第一个数值,N,(0<= N<=2,000,000)是快乐的牛奶制造者的一天需要牛奶的数量。每天,快乐的牛奶制造者从每个农民那购买一定量的牛奶,少于或等于农民所能提供的最大值。单独的一行包含单独的一个整数,表示快乐的牛奶制造者拿到所需的牛奶所要的最小费用。

2025-02-04 20:59:20 218

原创 1003. 【USACO题库】1.1.4 Broken Necklace 破碎的项链

举例来说,图 A 中的项链,在珠子 9~10 或珠子 24~25 之间切断项链,可以收集到 8 个珠子。假如你要在某些地方切断项链,展开成一条直线,然后从一端开始收集同颜色的珠子直到你遇到一个不同颜色的珠子;有一条由 n 个红色、白色、或蓝色的珠子组成的项链 (3≤n≤35000),珠子顺序完全是随机的。的位置)收集到连续 5 颗红珠子,和连续 6 颗蓝珠子,因此最多可以收集到 11 颗珠子。请编程来确定从一条项链上,最多可以被收集的珠子数目。一行一个整数,表示从项链上最多可以被收集的珠子数目。

2025-01-26 20:59:48 402

原创 1002. 【USACO题库】1.1.3 Friday the Thirteenth 黑色星期五

13 号星期五(又称黑色星期五,与黑色星期五购物日子不同,后者为感恩节后的第一个礼拜五)是指公历一个月份的第十三天恰好是星期五。在许多其他的文化当中也可见到类似的迷信,例如在希腊的文化也视“13 号星期五”为不吉利的一天。为了回答这个问题,写一个程序来计算在连续的 n 年中,每月的 13 日落在星期一,星期二……Step 2:否则,判断完该年份不是世纪年之后,只需要看其是否能被44整除,是则该年份是闰年,否则不是。Step 5:在执行 Step 4的时候,如果还到了年末,年份加11,月份和天份同时归11。

2025-01-26 20:57:34 551

原创 1001. 【USACO题库】1.1.2 Greedy Gift Givers 贪婪的送礼者

每个人都要去银行(或任何其他资金来源)取一定数量的钱来送礼,然后把这些钱平均分给所有要送礼的人。所有参与者的“账户”余额都是 0,送出的钱会减少,收到的钱会增加。你的目标是推算出每个人“净赚”了多少(收到的钱比送出的钱多多少)。输出 NP 行,每行都有一个名字,然后是该人的净收益或净损失(收到的钱减去送出的钱)。已知:每个人的名字都不超过 14 个字符、小组中每个人花在礼物上的钱,以及每人送礼的朋友名单,请计算每个人最后“净赚”了多少钱。接下来 NP 行,一行一个字符串,为各个小组成员的名字。

2025-01-26 20:38:03 908

原创 1016. 【USACO题库】1.5.1 Number Triangles数字金字塔

往左下方是‘4’,得到的最终值为6,往右下方是‘5’,得到的最终值是7.这时当然选择右下方。再比较走两条路的值,右边的值更大,选择右边的值。写一个程序来计算从最高点开始在底部任意处结束的路径经过数字的和的最大。同理,应选择左下,得到最终值是12。若从倒数第二排的‘2’开始走,只有2个选择,往左下方和右下方。再次考虑倒数第二排的7,起点的值保存了从起点到终点的最优值,也就是答案。,我们不需要在选择下一步怎么走,直接加上左下的值即可。同理,走右下时,直接加上右下的值即可。单独的一行包含那个可能得到的最大的和。

2025-01-26 20:35:54 355

原创 1019. 【USACO题库】1.5.4 Checker Challenge跳棋的挑战

检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行,每列,每条对角线(包括两条主对角线的所有对角线)上都至多有一个棋子。对于一条从左上到右下的对角线,其上的棋子坐标应满足x-y为一定值,为了避免负数的产生,代码中用x-y+n来储存数字,具体效果读者可以自行研究。只要满足这三个数字均为使用过,则在ans[line]=i处放置棋子,并将check数组中的相应数值标记为已使用,并对下一行进行搜索。数组ans[line]=i表示第line行的第i列有一个棋子,保证了每行只有一个棋子;

2025-01-26 20:33:34 726

原创 1185. 【动态规划】砝码称重

设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其质量<=1000g),求出用他们能称出的质量的种类数(不包括质量为0的情况)。a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个,......20g砝码有a6个)举个栗子:2 1 2 1 1 1存在a里就是1 1 2 3 3 5 10 20;Total=3(表示可以称出1g,2g,3g三种不同的重量)先打一个b[10]={0,1,2,3,5,10,20};再用a数组记录展开后的a1个1g,a2个2g。

2025-01-17 11:26:15 225

原创 1119. 【宽度优先搜索BFS】细胞

2、沿a数组矩阵从上到下,从左到右,找到遇到的第一个细胞;将细胞的位置入队q,并沿其上、下、左、右四个方向上搜索,如果遇到细胞(a[i,j]=1)则将其位置入队,入队后的位置a[i,j]数组置为0;一个矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。3、将h队的队头出队,沿其上、下、左、右四个方向上搜索,如果遇到细胞则将其位置入队,入队后的位置a数组置为0;1、从文件中读入m*n矩阵,将其转换为0、1矩阵存入a数组中;

2025-01-17 11:02:34 208

原创 1164. 【宽度优先搜索BFS】母亲的牛奶

农民约翰有三个容量分别是A,B,C升的桶,A,B,C分别是三个从1到20的整数, 最初,A和B桶都是空的,而C桶是装满牛奶的。当然每一次灌注都是完全的。写一个程序去帮助农民找出当A桶是空的时候,C桶中牛奶所剩量的所有可能性。注意要判断当前状态是否存在过,我一开始就A倒给C,C倒给A,A又倒给C,死循环了。nowa为当前a杯子的奶的多少,ta为a杯子的容量。只有一行,升序地列出当A桶是空的时候,C桶牛奶所剩量的所有可能性。分别DFS,倒的时候判断当前的杯子是否能倒。单独的一行包括三个整数A,B和C。

2025-01-15 21:09:47 197

原创 1165. 【宽度优先搜索BFS】单词接龙

单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at和atide间不能相连。输入的第一行为一个单独的整数n(n<=20)表示单词数,以下n行每行有一个单词,输入的最后一行为一个单个字符,表示“龙”开头的字母。(其实也就是读题问题。

2025-01-15 21:04:24 277

原创 1118. 【宽度优先搜索BFS】奇怪的电梯

大楼的每一层楼都可以停电梯,而且第i层楼(1<=i<=N)上有一个数字Ki(0<=Ki<=N)。电梯只有四个按钮:开,关,上,下。在一楼,按“上”可以到4楼,按“下”是不起作用的,因为没有-2楼?开始入队 (A,0)(A,0),然后把上、下入队(合法的话),直到第一次出现 B,其实就是不记录 dis 还不排序的 Dijkstra,记得打标记。输入文件共有二行,第一行为三个用空格隔开的正整数,表示N,A,B(1≤N≤200, 1≤A,B≤N),第二行为N个用空格隔开的正整数,表示Ki。

2025-01-15 20:56:34 186

原创 1257. 【动态规划】能量项链

如果前一颗能量珠的头标记为 m,尾标记为 r,后一颗能量珠的头标记为 r,尾标记为 n,则聚合后释放的能量为 m× r × n(Mars 单位),新产生的珠子的头标记为 m,尾标记为 n。基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)。

2025-01-12 16:28:37 453

原创 1256. 【动态规划】护卫队

当一组车队到达了桥的另一端,该端的指挥员就用电话通知另一端的指挥员,这样下一组车队才能开始通过该桥。一组车队通过该桥的时间是用该车队中速度最慢的车通过该桥所需的时间来表示的。接下来的几行中,每行包含两个正整数W和S(用空格隔开),W表示该车的重量(用吨表示),S表示该车过桥能达到的最快速度(用千米/小时表示)。​ 在状态转移的过程中,我们需要考虑车组的重量以及其中最慢车的时间。​ 因此,我们只需建立一维数组f[i]表示到i的最佳组合方案,然后对每一个i便利1至i-1,找出i与其前方车辆的最佳组合即可。

2025-01-12 16:25:54 414

原创 1250. 【动态规划】复制书稿

现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一、第三和第四本书给同一个人抄写。(区间)DP F[I][J]表示前i本书分给j个人用的最短时间 由于每一次j的状态由比j小的状态得出,所以要先枚举j,然后枚举i,接着枚举上一次抄书的人是谁。共k行,每行两个整数,第i行表示第i个人抄写的书的起始编号和终止编号。k行的起始编号应该从小到大排列,如果有多解,则尽可能让前面的人少抄写。第一行两个整数m,k;

2025-01-12 16:22:06 228

原创 1244. 【图的遍历】骑马修栅栏(fence)

可以按正常的输入然后存入map数组(PS:如果你用的是万能头就不要定义map数组啦,可以定义一个f数组什么的)这里就出现和一本通上一笔画的差距了,是累减,每次记录就加一而不是赋值为1。我们如果把输出的路径看成是一个500进制的数,那么当存在多组解的情况下,输出500进制表示法中最小的一个 (也就是输出第一个数较小的,如果还有多组解,输出第二个数较小的,等等)。他讨厌骑马,因此从来不两次经过一个一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。

2025-01-12 16:15:12 323

原创 1249. 【动态规划】方格取数

二维的思路偏向贪心,即定义dp[ i ][ j ]为走到点[ i , j ]时的最佳选项,此时保证第一遍走的时候为最佳答案,第二遍走时为去掉第一遍走过的点时的最佳答案,保证两遍都是分别的最佳答案但非整体的最佳答案……某人从图中的左上角的A出发,可以向下行走,也可以向右行走,直到达右下角的B点。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。我们使用dp[ i ][ j ][ k ][ l ]表示第一遍走到点[ i , j ],第二遍走到点[ k , l ]的最优解,代码如下:。

2025-01-12 16:11:25 387

原创 1183. 【动态规划】开心的金明

下面来到我们的正题: 首先判断是否为背包问题,可见其背包就是money的总数,质量就是重要度*money。背包问题主要是背模板,这里收录了一些模板。一些复杂的背包问题(如泛化物品)未收录。到此建模完成,思考+读题用时3min。有根据其特性可知这是01背包。

2025-01-12 16:01:16 417

原创 1198. 【高精度练习】减法神童

为了证明自己神奇的计算能力,减法神童请全城的人都来出题考自己,只要答错一题他就自愿放弃“减法神童”的称号。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。重载运算符,顾名思义,将加减乘除重载,普通加(减乘除等)号变为高精加(减乘除),具体如下: 重载运算符分为两步:重载声明(较重要)和重载决策。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。注意,这里用的是压位高精。

2025-01-08 21:36:19 313

原创 1225. 【并查集专题】搭配购买

..,n,并且每朵云都有一个价值。怎么dfs,这道题的要求是若1,2,3,4相连,则1,2,3,4必须同时买,所以我们可以把1,2,3,4这四个点的总价值和费用记录在1号节点上;感觉这道题的做法有无数种,可以用并查集+背包,也可以用缩点+背包,这,两种方法楼下的已经讲得很清楚了,所以我这里讲一个更简单的方法dfs+背包。第 n+2~n+1+m 行,每行 ui,vi,表示买 ui 就必须买 vi,同理,如果买 vi 就必须买 ui。第 1 行 n,m,w,表示 n 朵云,m 个搭配,Joe 有 w 的钱。

2025-01-08 21:31:41 137

原创 1224. 【并查集专题】家谱

输入文件由多行组成,首先是一系列有关父子关系的描述,其中每一组父子关系由二行组成,用#name的形式描写一组父子关系中的父亲的名字,用+name的形式描写一组父子关系中的儿子的名字;其实这题很简单,我们肯定用并查集来模拟,那我们怎么快速将人名映射出来呢,当然是用容器来存储,这里适合用的容器是map ~~(我最喜欢的容器)~~可以映射下标:map<string,string>fa第一个string类型表示的是一对关系中儿子是谁,第二个string类型表示的是一对关系中父亲是谁。不然就找下去,并记住他。

2025-01-08 21:26:23 290

原创 1080. 【搜索与回溯算法】图的m着色问题

给定无向连通图G和m种不同的颜色。那么一旦点i染j色是局部合法的,那么我可以认为在一种全局合法的方案下染j色和其他从未出现过的颜色是等价的,于是方案数直接乘以x返回即可。首先说明这份代码并不是rank1,因为rank1的代码在一年前交的,好像只有两个点有时间,再是该代码经过微小的优化之后可以飞起来(但是因为个人的历史问题,我并不打算做任何这些优化)。第1行有3个正整数n,k 和m,表示给定的图G有n个顶点和k条边,m种颜色。对于给定的无向连通图G和m种不同的颜色,编程计算图的所有不同的着色法。

2025-01-08 21:14:54 259

原创 1078. 【搜索与回溯算法】部落卫队

否则判断是否满足约束条件(要和限界条件有所区分),如果满足,则拓展左子树,此时左子树上的节点表示能够进入卫队,所以令x[deep]=1,cn++,表示此时的人数增加1,然后dfs(deep+1)继续搜索左子树。判断限界条件cn+fn>bestn,cn=3,fn=n-1=1,bestn=0,满足限界条件,令x[4]=0,生成E结点。判断限界条件cn+fn>bestn,cn=3,fn=n-1=0,bestn=0,满足限界条件,令x[5]=0,生成F结点。居民编号为1,2,…令x[3]=0,生成G结点。

2025-01-08 21:10:42 625

原创 1159. 【贪心算法】加工生产调度

可以大胆猜想,要使车间的空闲时间最短,就要把在A车间上加工时间最短的产品最先加工,这样使得B车间能在最短的空闲时间内开始加工;把在B车间上加工时间最短的产品放在最后加工,这样使得A车间用最短的时间等待B车间完工。很明显第一个产品在A车间上加工时,B车间必须等待,最后一个产品在B车间上加工时,A车间也在等待B车间的完工。(1)就要把在A车间加工时间最短的部件优先加工,这样使得B车间能以最快的速度开始加工。所以我们应该让在A车间上加工时间短的产品优先,而在B车架上加工时间短的产品排在后面。

2025-01-07 21:02:06 233

原创 1157. 【贪心算法】最大乘积

一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…现在你的任务是将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。大于或等于 �n ,然后找到一个合适的数并更改(如果等于 �n 就不更改),使得和满足要求。第一行是分解方案,相邻的数之间用一个空格分开,并且按由小到大的顺序。让你将一个正整数 n 分解成若干个自然数之和,要求这些数的乘积最大。:当 �=3,4n=3,4 时并不符合上述的贪心策略,需要特判。

2025-01-07 20:58:32 206

原创 1155. 【贪心算法】智力大冲浪

一旦出现一个不可能在规定期限内完成的任务,则把其扔到最大的一个空时间段,因为不能完成的任务在任意一个时间段中罚款数额都是一样的,这样得到的结果必然是最优的。贪心策略是让扣款数额大的尽量在规定的期限内完成,这样我们就先把这些任务按照扣款的数额进行排序,把大的排在前面,进行放置。因为不同的小游戏不能准时完成时具有不同的扣款权数,而且是求问题的最优解,所以很容易想到用贪心算法求解。假如罚款最多的一个任务的完成期限是k,我们应该放在小于等于k的最靠后的时间段。

2025-01-07 20:55:11 187

原创 1151. 【贪心算法】排座椅

同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是 (i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道。接下来D行,每行有4个用空格隔开的整数,第i行的4个整数Xi,Yi,Pi,Qi, 表示坐在位置(Xi,Yi)与(Pi,Qi)的两个同学会交 头接耳(输入保证他们前后相邻或者左右相邻)。第一行,有5各用空格隔开的整数,分别是M,N,K,L,D(2<=N,M<=1000,0<=K< M,0<=L<N,D<=2000)。在该方案下,上课时交头接耳的学生对数最少。

2025-01-07 20:52:11 255

原创 1145. 【贪心算法】美元汇率

int n,i,a;//d数组存储美元,m数组存储马克int main()//输入天数cin>>m[1];//第一天的兑换值for(i=2;i

2025-01-07 20:45:49 234

原创 1144. 【贪心算法】合并果子

接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为 12。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。先排序,选取最小的两堆果子,然后合并,插入。这道题很有意思,也很清真。以上是精神,代码写出来大概就是,桶排,建立两个队列,排序结果放进第一个当中,合并结果放在第二个当中,每次选从两个队列队头选取比较小的合并。在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

2025-01-07 20:44:13 273

原创 1143. 【贪心算法】纪念品分组

元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

2025-01-07 20:39:05 298

原创 1139. 【贪心算法】均分纸牌

B. 从左到右,根据当前的前i堆的和sum(i),与目标的前i堆的和sumstd(i),进行比较,如果多了,则向后方移动一次纸牌(更新a[i], sum[i], a[i+1]);在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;C. 从右向左,根据每堆的纸牌数a[i],与每堆目标纸牌数ave比较,如果多了,则向前移动纸牌(更新a[i], sum[i-1], a[i-1])(1)总思路:暴力纯模拟(实际的真实、可移动的操作过程),如果该题,需要打印每步实际的移动方法,这个做法是可以输出的。

2025-01-07 20:34:41 249

原创 1140. 【贪心算法】删数问题

键盘输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。很明显,就是删去下坡数,也就是这个例子中的7(比5大)、5(比4大)、4(比3大)、8(比最后一个大(假设有,并为0))。第四次删的数为8,和最后一个数(应该是a[7](假设有,并为0))比较,发现5跟大。第一次删的数为7,和5比较,发现7跟大(简单表述)第二次删的数为5,和4比较,发现5跟大。第三次删的数为4,和3比较,发现4跟大。

2025-01-07 20:31:22 217

原创 1120. 【宽度优先搜索BFS】产生数

原因很简单,DP要保证正确性,就要保证每阶段的决策都是最优解,然而dis[i,k]和dis[k,j]未必在dis[i,j]之前算出,因此会导致一种错误。譬如下图中,从6到7的最短路径本是6-1-5-4-1,但dis[7,5],dis[7,1]和dis[7,4]并未算出,于是遍历了1-7几个中转点后,dis[6,7]还未更新为最优解,就因为i,j在循环外部而不会更新解了。可以看到,宽度优先搜索的想法并不现实,因为宽度优先搜索中,一个点一旦被访问,就不会被二次访问,因此不会更新最优解。仅要求输出不同整数个数。

2025-01-05 15:26:24 852

原创 1073. 【搜索与回溯算法】组合的输出

此题与全排列有相似之处只不过全排列是n个数占n个位置此题为n个数占m个位置(m < n)以样例为例1-5中选三个数可以想成五个数争夺三个位置,且单调递增。

2025-01-05 15:17:49 266

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除