[CSP2020] 函数调用

本文探讨了CSP2020中涉及的函数调用问题,重点在于如何处理加法和乘法操作。在仅存在加法时,采用拓扑序传递标记的策略。对于乘法,不再将其视为整体,而是关注它对加法的影响。通过计算后续乘法操作的总乘积并结合拓扑排序,可以解决这个问题。文章使用图示说明了如何通过标记下传的方法来处理这种复杂情况。
摘要由CSDN通过智能技术生成

一、题目

点此看题

二、解法

从部分分的做法入手,当只有加法操作的时候利用拓扑序下传标记的方法是明显的。

但是多了一个乘法,此时不要考虑成"一起乘",这样搅在一起想是很难受的。其实 a a a 数组是个空壳子,因为拿到所有 2 2 2操作的乘积是很容易的(直接拓扑),所以我们只用考虑乘法对加法的贡献

首先我们从大的操作顺序上去考虑,对于一个 g [ i ] g[i] g[i] 操作,先求出后面 g [ i + 1... n ] g[i+1...n] g[i+1...n] 操作引起的的 2 2 2操作总乘积 m u l mul mul,那么 g [ i ] g[i] g[i] 操作引发的 1 1 1操作次数都要乘上 m u l mul mul ,这时我们再考虑某个操作内部乘法对加法的影响。

类似于只有加法的情况,我们考虑用标记下传的方式来实现他,如图:
在这里插入图片描述

就用图示方法下传标记,其中 1 , 2 , 3 1,2,3 1,2,3 表示题目中的访问顺序, m 1 , m 2 m1,m2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值