牛客 共鸣问题(思维难题)
生活随笔
收集整理的這篇文章主要介紹了
牛客 共鸣问题(思维难题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
鏈接:https://ac.nowcoder.com/acm/contest/10325/B
來源:牛客網
現在有n個音符和m對共鳴關系,編號為1~n,
每個音符自己有一個奏響時的優美程度,
共鳴關系(x,y,z)表示音符x和y同時奏響的額外優美程度是 z,同時不奏響則為 -z,其他情況為0。
音符可以選擇奏響或者不奏響,不奏響的音符沒有優美程度。
我們想知道最大的優美程度和是多少,我們不需要知道具體是哪些音符被奏響了,只需輸出最大和即可。
共鳴關系可能有重復,其共鳴效果也會重復疊加。
示例1 輸入 2,1,[-10,-10],[[1,2,5]] 返回值 -5備注: 數據包括兩個數n,m,一個長度為n的數組a[], 表示每個音符奏響時的優美程度(a[0]表示第一個音符), 一個第一維長度為m的二維數組,描述m組共鳴關系。 輸出一個整數表示答案。 n,m<=100000,所有的優美程度和額外優美程度的絕對值<=330002. 解題
class Solution { public:/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可* * @param n int整型 * @param m int整型 * @param a int整型vector * @param b int整型vector<vector<>> * @return long長整型*/long long wwork(int n, int m, vector<int>& a, vector<vector<int> >& b) {// write code here// 初始為都沒有奏響,收益是 -zlong long ans = 0;vector<long long> delta(n, 0);for(int i = 0; i < m; ++i) {ans -= b[i][2]; // 都沒有響 -zdelta[b[i][0]-1] += b[i][2];//響一個的話 +z,跟上面的-z抵消為0delta[b[i][1]-1] += b[i][2];//同時響的話,為z}for(int i = 0; i < n; i++){if(a[i]+delta[i] > 0)//收益為正ans += a[i]+delta[i];}return ans;} };我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的牛客 共鸣问题(思维难题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode MySQL 1479.
- 下一篇: TensorFlow 2.0 - tf.