贪心算法
文章平均质量分 50
h_tour
这个作者很懒,什么都没留下…
展开
-
CF 5C.Longest Regular Bracket Sequence 栈 + DP
题目链接 题意: 给一个只包含′(′、′)′'('、')'′(′、′)′左右括号的字符串,询问最长的合法括号序列的长度和出现次数。 题解: 设dp[i]dp[i]dp[i]表示以位置为iii的右括号结尾的最长合法括号子序列的长度,状态转移方程可以得出是:dp[i]=dp[cur−1]+i−cur+1dp[i] = dp[cur - 1]+i-cur+1dp[i]=dp[cur−1]+i−cur+1,其中,curcurcur表示位置为iii的右括号所对应的左括号的位置,这个可以使用栈记录,也就是对应的栈顶元素原创 2021-08-08 21:36:43 · 135 阅读 · 0 评论 -
51nod 1255 字典序最小的子序列
题目链接 题意: 给我们一个字符串SSS,让我们从中找到一个子序列满足以下两个条件: 包含字符串中所有出现过的字符各1个。 是所有满足条件1的串中,字典序最小的。 题解: 这题可以使用栈解决。对与还没当前 ...原创 2021-03-20 16:21:24 · 161 阅读 · 0 评论 -
51nod 1625 夹克爷发红包
题目链接 枚举+贪心。 题意: 有nnn排mmm列观众,给定这些观众现在手里的红包金额。老板现在最多还能发kkk组高级红包,每组高级红包只能同时给一行或一列的人派发,同时,每个高级红包的金额都是xxx, 每个人只能接受一个高级红包,被发高级红包的人手里的普通红包会被收走。 问,怎么派发才能使所有人拿到的红包总额最多。 题解: 这道题目如果只能分给行或者列,直接贪心就可以解决,但是,此题既能给行又能给列。每次给了行之后,由于有每个人只能收一个高级红包,导致再给列时,原来的数组已经发生了改变,也就是每次操作其实原创 2021-03-18 18:48:24 · 54 阅读 · 0 评论 -
51nod 1163 最高的奖励
题目链接 贪心,优先队列。 题意: 给了nnn个任务的结束时间和奖励,让我们安排做任务的顺序,使最终能够得到的奖励最大。 题解: 朴素做法: 首先将所有的任务根据奖励的大小从大到小排序,如果奖励大小相同,结束时间晚的排在前面。贪心的策略就是,将该任务结束时间前第一个没有被安排任务的时间分给该任务。由于结束时间的数据较大,直接贪心会出错,我们发现,总共只有nnn个任务,也就是最多只需要nnn个单位的时间就可以做完所有任务。因此,我们在贪心时,将当前任务的结束时间与nnn取一个minminmin。 朴素版代码:原创 2021-03-18 16:36:49 · 102 阅读 · 0 评论