原复杂度高代码还有问题,求dalao帮助+优化
  • 板块学术版
  • 楼主Justin090102
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/1/25 15:39
  • 上次更新2023/10/28 11:00:31
查看原帖
原复杂度高代码还有问题,求dalao帮助+优化
360338
Justin090102楼主2022/1/25 15:39

题目背景

小进是一个热爱作曲、不善于编程的孩子。一天,他又想编一首有 mm 个音符、有 nn 种不同音高的曲子。为了方便,将这 nn 种音高命名为 1,2,3,4,...,n1,2,3,4,...,n

小进想要让他的音乐尽可能好听,但又不会求解,于是找到了会编程的你。

题目描述

小进将会告诉你 kk 种不同的由 22 个音符组成的旋律,还有这两个音符按某个顺序搭配后,乐曲的美妙度会增加相应的数。

还有一些由两个音符组成的旋律,小进没有给出,也就是这个旋律并不会增加美妙度,也不会减少。

你需要设计一个程序,输出所有可能中最高的美妙度,但是音符数量必须是 mm ,且为了避免重复单独,每一个 22 个音符的旋律在这首乐曲中的数量是有限制的。

输入格式

11 行输入 33 个数,分别是 n,m,kn,m,k 。意义在上面已经给出。

接下来一共 kk 行,每一行 44 个数,其中第 ii 行的 44 个数分别为 bi,ai,vi,tib_i,a_i,v_i,t_i ,它们表示第 ii 个由 22 个音符组成的旋律是第 aia_i 个音高的音符在第 bib_i 个音高的音符后面,这样的旋律的美妙度为 viv_i ,但在这首歌中只能出现 tit_i 次。

没有输入的旋律可以出现无数次。

输出格式

输出 11 个数,即曲子美妙度的最大值。

输入输出样例

输入 # 1

9 9 9
6 5 10 1
5 3 8 1
3 5 6 1
5 2 9 1
2 1 8 1
4 7 -1 5
1 2 3 1
2 3 2 1
3 7 1 2

输出 # 1

47

样例说明:

6 5 3 5 2 1 2 3 7 6 5 2 1 2 3 5 3 7

数据范围:

1b,an881\le b,a\le n\le88 (因为乐谱只有 8888 个音符)

0tm15000\le t\le m\le1500

0k76560\le k\le7656

106v106-10^6\le v\le10^6

蒟蒻目前就想到 O(n3m2)O(n^3m^2) (还有问题)的做法,要运算 1,533,312,000,0001,533,312,000,000 次,要约 1500S(25min)1500S(25min) 才能运行完。可以注意到这题 O(n3m)O(n^3m) 能过,求方法。

O(n3m2)O(n^3m^2) 代码还有缺陷,比如输入

4 7 4
1 4 2 2
4 3 2 2
3 1 2 2
1 2 3 1

时它会在上一个音符是 11 时选用 1 2 。这样会避开正确答案。也求dalao指导优化。如果把每一种情况存进去,最差会使时空复杂度都乘上一个 kk 。所以实际上现在还是只有 O(n3m2k)=O(n5m2)O(n^3m^2k)=O(n^5m^2) 算法。即使您只会优化到真正的 O(n3m2)O(n^3m^2) 水平,也请您留下讲解,谢谢!

2022/1/25 15:39
加载中...