【前言】
简单题。
【暴力】
可以有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; } };