文章目录

  • 1. 题目
  • 2. 解题

1. 题目

假设你是球队的经理。对于即将到来的锦标赛,你想组合一支总体得分最高的球队。球队的得分是球队中所有球员的分数 总和

然而,球队中的矛盾会限制球员的发挥,所以必须选出一支 没有矛盾 的球队。
如果一名年龄较小球员的分数 严格大于 一名年龄较大的球员,则存在矛盾。同龄球员之间不会发生矛盾。

给你两个列表 scores 和 ages,其中每组 scores[i] 和 ages[i] 表示第 i 名球员的分数和年龄。

请你返回 所有可能的无矛盾球队中得分最高那支的分数 。

示例 1:
输入:scores = [1,3,5,10,15], ages = [1,2,3,4,5]
输出:34
解释:你可以选中所有球员。示例 2:
输入:scores = [4,5,6,5], ages = [2,1,2,1]
输出:16
解释:最佳的选择是后 3 名球员。注意,你可以选中多个同龄球员。示例 3:
输入:scores = [1,2,3,5], ages = [8,9,10,1]
输出:6
解释:最佳的选择是前 3 名球员。提示:
1 <= scores.length, ages.length <= 1000
scores.length == ages.length
1 <= scores[i] <= 10^6
1 <= ages[i] <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/best-team-with-no-conflicts
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:

  • 动态规划应用–最长递增子序列 LeetCode 300
class Solution {typedef pair<int, int> pii;
public:int bestTeamScore(vector<int>& scores, vector<int>& ages) {int n = scores.size();vector<pii> score_Age(n);for(int i = 0; i < n; i++) {score_Age[i] = {scores[i], ages[i]};}sort(score_Age.begin(), score_Age.end(),[&](auto& a, auto& b){return (a.second < b.second || (a.second == b.second && a.first < b.first));});//年龄小的在前,同龄的话,能力小的在前//然后DP寻找上升子序的最大和vector<int> dp(n, 0);dp[0] = score_Age[0].first;int maxscore = dp[0];for(int i = 1; i < n; ++i){int curscore = score_Age[i].first;dp[i] = score_Age[i].first;//初始化为自己的分数for(int j = i-1; j >= 0; j--){int prevscore = score_Age[j].first;if(curscore >= prevscore){   //当前人的能力值不是下降的, 加入队伍dp[i] = max(dp[i], dp[j]+curscore);}}maxscore = max(maxscore, dp[i]);}return maxscore;}
};

184 ms 19 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1626. 无矛盾的最佳球队(最大上升子序DP)相关推荐

  1. LeetCode 1615. 最大网络秩 / 2389. 和有限的最长子序列 / 1626. 无矛盾的最佳球队(排序+动态规划)

    1615. 最大网络秩 2023.3.15 每日一题 题目描述 n 座城市和一些连接这些城市的道路 roads 共同组成一个基础设施网络.每个 roads[i] = [ai, bi] 都表示在城市 a ...

  2. LeetCode 354. 俄罗斯套娃信封问题(最长上升子序 DP/二分查找)

    1. 题目 给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现. 当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样. 请计算最多 ...

  3. LeetCode 1691. 堆叠长方体的最大高度(排序+最大上升子序DP)

    文章目录 1. 题目 2. 解题 2.1 暴力超时解 2.2 排序+最长上升子序 463 / 3709,前 12.5% 1240 / 9290,前13.3% 1. 题目 给你 n 个长方体 cuboi ...

  4. LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素. 每一次操作中,你可以在 arr 的任 ...

  5. LeetCode 1671. 得到山形数组的最少删除次数(最长上升子序DP nlogn)

    文章目录 1. 题目 2. 解题 2.1 n^2 解法 2.2 nlogn 解法 197 / 1891,前10.4% 435 / 6154,前7.07% 前三题如下: LeetCode 5557. 最 ...

  6. 如果我的接口必须返回Task,那么实现无操作的最佳方法是什么?

    本文翻译自:If my interface must return Task what is the best way to have a no-operation implementation? I ...

  7. [贪心|字符串] leetcode 3 无重复字符的最长子串

    [贪心|字符串] leetcode 3 无重复字符的最长子串 1.题目 题目链接 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度. 示例1: 输入: "abcabcbb" ...

  8. 关于自然数系统的无矛盾性

    在自然数系统里面是否存在矛盾?1900年,德国数学家希尔伯特提出了这个问题,摆在23个问题的第二个未解决问题. 数千年来,国人"打算盘"的经验,表明算盘"打"不 ...

  9. 【LeetCode】【HOT】105. 从前序与中序遍历序列构造二叉树(哈希表+递归)

    [LeetCode][HOT]105. 从前序与中序遍历序列构造二叉树 文章目录 [LeetCode][HOT]105. 从前序与中序遍历序列构造二叉树 package hot;import java ...

最新文章

  1. C++文件读写——字符串分割
  2. oracle触发器超过上限,ORACLE系统触发器的疑问,限制IP登录数
  3. React性能优化:immutability-helper
  4. 电脑常见的VGA、DVI、PS/2、USB等接口知识笔记,值得收藏!
  5. 详解spring框架入门到精通
  6. 湖南计算机软件水平考试,2021年湖南省计算机软考职称考试 网络工程师 信息系统项目管理师报名考试...
  7. vue向ifarm传值_vue组件间传值
  8. 微信小程序实现日历功能(附加签到、迟到、未签的状态显示)
  9. byte拷贝java_Java字节流实现文件夹的拷贝
  10. 关于税控的一些问题总结
  11. 戴尔电脑硬件自检教程
  12. apq用linux镜像,apq模拟器如何使用 apq模拟器使用方法教程
  13. Linux C程序访问NULL指针
  14. 2020年GitHub 上那些优秀Android开源库,这里是Top10!
  15. javaweb JAVA JSP水费管理系统JSP电费管理系统JSP缴费管理系统JSP水费缴费系统JSP水电费管理
  16. 实验三十五 Windows Server 2012 RDS桌面虚拟化之六VDI虚拟桌面的用户管理和安全防护
  17. 推荐一个java技术文章公众号
  18. 原生js实现数据双向绑定
  19. 失眠尽快入睡小妙招,这些助眠产品让你一招入睡
  20. Latch的使用详解

热门文章

  1. JavaScript使用场景
  2. c语言迷宫游戏怎么存放坐标,求解迷宫问题(c语言,很详细哦
  3. opencv python教程简书_OpenCV-Python系列二:常用的图像属性
  4. 软件自动更新解决方案及QT实现
  5. c++远征之继承篇——继承方式
  6. 计算机的发展史及多道技术
  7. Delphi XE7的Splash 功能
  8. input中的disabled 和 readonly的区别
  9. div中iframe高度自适应问题
  10. 使用Marshal.Copy把Txt行数据转为Struct类型值