【前言】
简单题。
【暴力】
可以有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;
}
};
京公网安备 11010502036488号