链接:https://ac.nowcoder.com/acm/contest/10324/C
来源:牛客网

题目描述

现在有n个音符和m对共鸣关系,编号为1~n,每个音符自己有一个奏响时的优美程度,共鸣关系(x,y,z)表示音符x和y同时奏响的额外优美程度是z,同时不奏响则为-z,其他情况为0。

音符可以选择奏响或者不奏响,不奏响的音符没有优美程度。我们想知道最大的优美程度和是多少,我们不需要知道具体是哪些音符被奏响了,只需输出最大和即可。

共鸣关系可能有重复,其共鸣效果也会重复叠加。

数据包括两个数n,m,一个长度为n的数组a[],表示每个音符奏响时的优美程度(a[0]表示第一个音符),一个第一维长度为m的二维数组,描述m组共鸣关系。

输出一个整数表示答案。

n,m<=100000,所有的优美程度和额外优美程度的绝对值<=33000

示例输入:
2,1,[-10,-10],[[1,2,5]]
示例输出:
-5

分析

最开始,以为是一个动态规划的题,有一说一,他长得确实像动态规划。

对于第i个音符,选择演奏还是不演奏,然后要附加考虑到共鸣的问题。

感觉很复杂,不会做。

后来经过讲解才知道,不需要动态规划。

我们先不考虑共鸣的问题,那么就是直接贪心,如果第i个音符是正的,就演奏,是负数,就不演奏,很简单。

那么考虑共鸣,对于共鸣关系(x,y,z)来说,一共可能出现四种情况,其额外优美程度题目也已经给出:

  • x演奏,y演奏           z
  • x不演奏,y演奏       0
  • x演奏,y不演奏       0
  • x不演奏,y不演奏   -z

思考的关键就在于这四种情况,如果我们假设都不演奏,那么我们的额外优美程度是-z,演奏任意一个,都会变成0,两个的话就是z。

所以可以直接把z这个值直接加到x,y音符上:

  • 默认不演奏为-z。
  • 演奏x,那么值为-z+z=0
  • 演奏y,那么值为-z+z=0
  • 都演奏,-z+z+z=z

这样我们就把共鸣关系的值给分配到音符上了,然后直接对每个音符贪心即可。

代码

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) {long long ans=0;vector<long long> c(a.begin(),a.end());for (int i=0; i<m; i++){c[b[i][0]-1]+=b[i][2];c[b[i][1]-1]+=b[i][2];ans-=b[i][2];}for (int i=0; i<n; i++){if (c[i]>0) ans+=c[i];}return ans;}
};

要注意,最后的答案可能爆int,要开long long。

牛客S2第12场:音符共鸣相关推荐

  1. 2020 牛客多校第一场

    2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...

  2. 2019牛客多校第一场

    2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...

  3. 【2020年牛客暑假第八场】E题 Enigmatic Partition

    [2020年牛客暑假第八场]E题 Enigmatic Partition 一阶差分+隔项差分 题意 思路 方法一 方法二 Code 反思 题目链接: https://ac.nowcoder.com/a ...

  4. python字符串去重及排序 牛客_2018牛客多校第一场 D.Two Graphs

    题意: n个点,m1条边的图E1,n个点,m2条边的图E2.求图E2有多少子图跟图E1同构. 题解: 用STL的全排列函数next_permutation()枚举映射.对于每一种映射枚举每一条边判断合 ...

  5. 2019牛客多校第九场AThe power of Fibonacci(广义BM)

    2019牛客多校第九场AThe power of Fibonacci(广义BM) 题目大意 求斐波那契数列m次方的前n项和 解题思路 显然,斐波那契的m次方前缀和依然是线性递推,因此考虑用exBM求解 ...

  6. 【2021牛客寒假第五场】B-比武招亲(上)排列组合

    [2021牛客寒假第五场]B-比武招亲(上)排列组合 题意 思路 Code(44MS) 传送门: https://ac.nowcoder.com/acm/contest/9985/B 题意 思路 考 ...

  7. 【2021牛客寒假第五场】C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和

    [2021牛客寒假第五场]C-比武招亲(下)欧拉降幂+多项式求逆预处理伯努利数计算等幂求和 前置技能 题意 思路 Code(715MS) 传送门: https://ac.nowcoder.com/ac ...

  8. 牛客多校第二场补题(继续罚坐)

    牛客多校第二场(继续罚坐场) Draw Grids ZYT和LBC玩游戏,在4*4的矩阵中,从起点开始,每个人只能连一条直线,且只能在起点或者上一个人的终点位置连上这个位置相邻的一条直线,并且不能形成 ...

  9. 2020 7.12 -- 7.13 两场牛客多校 + 两场 unrated的cf的补题

    自闭ing之后的多校就不打了-太难了吧- 7.12多校 2020牛客暑期多校训练营(第一场) F Infinite String Comparision 少数几个会写的题 (唯二 开始想的是要lcm( ...

最新文章

  1. python---方法解析顺序MRO(Method Resolution Order)<以及解决类中super方法>
  2. 子类如果不实例化则不会调用它自身的静态构造函数
  3. 04_Pytorch生态、PyTorch能做什么、PyTorch之Autograd、autograd案例、GPU加速案例
  4. “阳光天使”2007全国小姐大赛北京赛区决赛
  5. 更多Requests的小技巧以及总结
  6. 微服务架构最强讲解,通俗易懂,写得太好了!
  7. 解决方法:AttributeError: module ‘torchtext.data‘ has no attribute ‘Field‘
  8. multiprocessing python_一行 Python 代码实现并行
  9. ssm如何在mapper插入实时的时间_第一个ssm整合
  10. 论文都看不懂,你还搞什么人工智能?
  11. bootstrap 点击图片放大查看_Bootstrap 开源 SVG 图标库 Bootstrap Icons
  12. 微信公众号 获取推送消息
  13. vscode开发ExtJs安装插件以及破解方法
  14. 计算机网络课程设计(ftp)
  15. ios真机调试出现“不受信任的开发者”解决方法
  16. java证明角谷猜想_Java程序(角谷猜想,applet) -
  17. 数字小人时钟windows电脑屏幕保护
  18. 打开Charles浏览器无法上网
  19. 互联网经典商战TOP 10
  20. 童甫带领下的海航科技集团的无人运输船正式亮相引关注

热门文章

  1. linux 原城关机,中标普华Linux操作系统解决方案
  2. ▲什么是迭代器?迭代器有什么作用?
  3. Python Shebang
  4. 最坚固的爱情,是懂得一个人的心
  5. 主机模拟i2c检测设备时出现错误死循环_西部数码使用指南:网站打不开数据库错误等常见问题解决方法...
  6. 安装VMWare虚拟机之后,发现网络贼卡,打开网页很慢
  7. keyup与keydown(详解)
  8. SSM框架下log4j配置说明
  9. TOKEN 验证详解
  10. ESP8266 Mesh发包流程介绍