zoukankan      html  css  js  c++  java
  • b_lc_无矛盾的最佳球队(排序+LIS)

    选出一支 没有矛盾 的球队。如果一名年龄较小球员的分数 严格大于 一名年龄较大的球员,则存在矛盾。同龄球员之间不会发生矛盾。
    给你两个列表 scores 和 ages,其中每组 scores[i] 和 ages[i] 表示第 i 名球员的分数和年龄。
    请你返回 所有可能的无矛盾球队中得分最高那支的分数

    思路
    LIS变形,没注意到同龄球员无矛盾的字眼,错了一次;
    f[i]表示0...i中LIS的长度,写下的第一版代码

    const int N=1005;
    typedef long long ll;
    class Solution {
    public:
        struct node {
            ll s,a;
            bool operator<(node& b) {
                return a!=b.a ? a<b.a : b.s<s;
            }
        } A[N];
        int bestTeamScore(vector<int>& ss, vector<int>& as) {
            ll n=ss.size(), ans=0, f[n]; memset(f,0,sizeof f);
            for (int i=0; i<n; i++) A[i].s=ss[i], A[i].a=as[i]; 
            sort(A,A+n);
            for (int i=0; i<n; i++) f[i]=A[i].s;
            for (int i=1; i<n; i++)
            for (int j=0; j<i; j++) if (A[j].a==A[i].a || A[j].s<=A[j].s) {
                f[i]=max(f[i], f[j]+A[j].s);
            }
            for (ll v : f) ans=max(ans, v);
            return ans;
        }
    };
    

    还是错了,当age相同时,应按照分数升序排,为了遇到下一个age更大时的容错率更大

    const int N=1005;
    typedef long long ll;
    class Solution {
    public:
        struct node {
            ll s,a;
            bool operator<(node& b) {
                return a!=b.a ? a<b.a : s<b.s;
            }
        };
        int bestTeamScore(vector<int>& scores, vector<int>& ages) {
            ll n=scores.size(), ans=0, f[n]; 
            node A[n];
            for (int i=0; i<n; i++) A[i].s=scores[i], A[i].a=ages[i]; 
            sort(A,A+n);
            for (int i=0; i<n; i++) f[i]=A[i].s;
            for (int i=1; i<n; i++) 
            for (int j=0; j<i; j++) if (A[j].a==A[i].a || A[j].s<=A[i].s) {
                f[i]=max(f[i], f[j]+A[i].s);
            }
            for (int i=0; i<n; i++) ans=max(ans, f[i]);
            return ans;
        }
    };
    
  • 相关阅读:
    innerHTML和innerText的区别
    AJAX是什么? AJAX的交互模型(流程)?同步和异步的区别? AJAX跨域的解决办法?
    事件初理解2不兼容
    那些宽高
    面试题
    事件初理解2不兼容
    ajax初理解
    attribute和property的区别
    启动nuxt项目fsevents报错
    CSS实现三栏布局(5种)
  • 原文地址:https://www.cnblogs.com/wdt1/p/13836539.html
Copyright © 2011-2022 走看看