牛客编程巅峰赛S2第12场 - 青铜&白银&黄金
共鸣问题
解题思路:对于每对匹配(x,y,z)如果都不响是 -z,如果响一个是 0,如果都响是 z
那么可以一开始减去对应的z,那么如果都不响是 0,如果响一个是 +z,如果都响是 +2z
之后贪心即可,讲题人的思路,太妙了!(记得用long long)
long long wwork(int n, int m, vector<int>& a, vector<vector<int> >& b) { // write code here long long ans=0; vector<long long> p(n); for(auto &i : b){ ans-=i[2]; p[i[0]-1]+=i[2]; p[i[1]-1]+=i[2]; } for(int i=0;i<n;++i) { if(a[i]+p[i]>0)ans+=a[i]+p[i]; } return ans; }