共鸣问题题解

【前言】
简单题。
【暴力】
可以有2^n的暴力。
还有其他暴力方式,不赘述。
【正解】
假设答案为ans,初始时,我们把ans设为所有额外共鸣的和的相反数。
并且将额外共鸣分别加到两个音符的优美程度上,得到一个新的价值。
最后,只有音符的价值大于0我们才将它加入答案。
这样显然是正确的。
具体请参照代码理解,非常简单的贪心。
参考代码:

class Solution {
public:
    /**
     * 
     * @param n int整型 
     * @param m int整型 
     * @param a int整型一维数组 
     * @param aLen int a数组长度
     * @param b int整型二维数组 
     * @param bRowLen int b数组行数
     * @param bColLen int* b数组列数
     * @return long长整型
     */
    long long a1[500005];
    long long wwork(int n, int m, int* a, int aLen, int** b, int bRowLen, int* bColLen) {
        // write code here
        long long ans=0;
        for (int i=1;i<=n;i++) a1[i]=0;
        for (int i=1;i<=m;i++)
        {
            int x=b[i-1][0],y=b[i-1][1],z=b[i-1][2];
            a1[x]+=z;
            a1[y]+=z;
            ans-=z;
        }
        for (int i=1;i<=n;i++)
        {
            if (a[i-1]+a1[i]>0) ans=ans+a[i-1]+a1[i];
        }
        return ans;
    }
};
全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
04-29 12:10
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务