![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
文章平均质量分 57
深街酒徒*
专业气氛组成员
展开
-
1247. 后缀表达式 Java题解 (贪心)【第十届蓝桥杯省赛C++B组,JAVA B组】
事实上,当m(表示负号的个数)==0时,最大值就是所有的数相加;当 m = N > 0 时,除了括号内的第一个数不能变为正数外,括号内的其它数都可以为正数,所以负号的个数范围为 [ 1, N ] 。相当于在一些负号里,只有一个数真正的是负数,其他数都可以变为正数。当还有 n个正号时,因为通过将正号放到括号内或外再次变为负号,所以负号的范围就成了:[ 1, N + n ]。意味着只要给定大于0个负号,就可以将所有的数都变为正数,除了表达式的第一个数a需要保留,还有括号内的第一个数b需要变相反号。原创 2022-04-04 23:28:28 · 1217 阅读 · 0 评论 -
1239. 乘积最大 Java题解 (模拟,贪心,双指针)【第九届蓝桥杯省赛C++B组】
分类讨论:(假设数组已从小到大有序)k为偶数,最大值一定为正数。k为奇数时,只有序列中均为负数,最大值才会为负数。求有序序列中k为偶数个的最大值:(双指针思想)序列最左端为l,序列最有端为r,因为负数乘以负数才会为正数,所以左端必须取连续的两个值,又因为取的k也是偶数,所以右端也取两个值。当左边两数乘积大于右边两数时,将左边两数累乘,并且左指针右移动两个单位,否则 右指针左移两个单位,直到k个数为止。原创 2022-04-04 20:41:52 · 1561 阅读 · 0 评论 -
1235. 付账问题 Java题解 (贪心)【第九届蓝桥杯省赛C++A组,JAVA A组】
要想使得标准差最小,即方差最小,应使得所有人的付账波动不能太大,理想状况是每人应该出正好平均值的钱,这样方差就是0。但是,当有人不够平均值时,就需要将他所有的钱都结付,尽可能的接近平均值,那这个人不够的部分就需要其他人来补上了,为了使每人出的钱都接近平均值,所以补的这部分需要“有能力担负的起的人”共同均摊。原创 2022-04-04 13:14:57 · 444 阅读 · 0 评论 -
112. 雷达设备 Java题解 (贪心)
题目让求至少有多少雷达可以将所有岛都覆盖,如过计算雷达的覆盖范围的话,非常麻烦,因为雷达的范围是一个二维的圆。但是可以转化为对于每个岛,计算雷达在坐标轴的哪个区间安放可以被完全覆盖该岛屿。所以问题就转化成了在坐标轴上的一些区间,选择尽量少的点,使得每个区间至少包含一个点(不是很严格的可以看成求一些区间的交集个数,如果将单个点也视为区间)。原创 2022-04-03 21:31:45 · 982 阅读 · 0 评论 -
104. 货仓选址 Java题解 (贪心)
设仓库地址为C,N家商店在数轴上排列为A1~An。当数轴上只有两家时,仓库地址只要选在A1~A2的任意位置都可以保证仓库到两商店的距离最短,因为它们的距离都是A2-A1;当数轴上有四个商店时,仓库对于A2~A3的位置仍然需要在他们中间,因为仓库在A2~A2之外就会多走一段重复的路。所以当有2n个商店时,仓库的位置可以为An~An+1 之间的任何位置;当有2n+1个商店时,仓库的位置在第An+1的位置可以使得距离最短。(从数轴上看的,所以需要有序)原创 2022-04-03 16:37:30 · 873 阅读 · 0 评论 -
1055. 股票买卖 II Java题解(贪心)
要想存在收益,一定是后面数的大于前面的数。当有跨度大于一天的交易一定都可以拆成长度等于一天的交易之和,所以每次只需要关注当天和后一天的交易即可。总结:相邻两天,遇增则买。原创 2022-04-03 11:45:03 · 627 阅读 · 0 评论 -
3358. 放养但没有完全放养 Java 题解
输入格式输入的第一行包含2626个小写字母,为a到z的牛文字母表顺序。下一行包含一个小写字母组成的字符串,为 Farmer John 听到 Bessie 唱的字母。输出格式输出 Bessie 所唱的完整的牛文字母歌的最小次数。数据范围字符串的长度不小于11且不大于10001000。输入样例:abcdefghijklmnopqrstuvwxyzmood输出样例:3样例解释在这个样例中,牛文字母表与日常的字母表的排列一致。Bes...原创 2022-03-17 20:41:56 · 528 阅读 · 0 评论 -
算法训练 Huffuman树 java 题解 569
问题描述 Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 给出一列数{pi}={p0,p1, …,pn-1},用这列数构造Huffman树的过程如下: 1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa+pb。 2. 重复步骤1,直到{pi}中只剩下一个数。 在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。 本题任务:对于...原创 2022-02-13 08:00:00 · 109 阅读 · 0 评论 -
最长递增子序列 (LIS)动态规划,贪心+二分 (java版)
最长递增子序列,动态规划,贪心,二分查找,binarysearch()的使用,java原创 2022-02-08 08:00:00 · 335 阅读 · 0 评论 -
石子游戏 225 java 题解
问题描述 石子游戏的规则如下: 地上有n堆石子,每次操作可选取两堆石子(石子个数分别为x和y)并将它们合并,操作的得分记为(x+1)×(y+1),对地上的石子堆进行操作直到只剩下一堆石子时停止游戏。 请问在整个游戏过程中操作的总得分的最大值是多少?输入格式 输入数据的第一行为整数n,表示地上的石子堆数;第二行至第n+1行是每堆石子的个数。输出格式 程序输出一行,为游戏总得分的最大值。样例输入1051051940027309198922781425129原创 2021-10-13 11:58:01 · 125 阅读 · 0 评论