[问题] 高中生解题系统B568一问

楼主: Ori185 (Ori185)   2018-09-10 23:54:33
开发平台(Platform): (Ex: Win10, Linux, ...)
WIN10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
g++
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
https://zerojudge.tw/ShowProblem?problemid=b568
小弟我目前刚学到动态规划算法
看到这题似乎可以应用到便试了试
结果从第三个测资开始似乎因为超过限制的64MB而终止
认为应该有比起创立一个超级大的二维阵列以外(70万…)
更加节省空间聪明的办法
请问可以指点解一下吗?
非常谢谢
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://glot.io/snippets/f4odl8o9kh/raw
补充说明(Supplement):
内存限制64MB
作者: idiont (supertroller)   2018-09-11 01:52:00
把n*700000变成2*700000
作者: dou0228 (7777)   2018-09-11 10:44:00
作者: idiont (supertroller)   2018-09-11 12:29:00
楼上这个不会过吧
作者: uorol (′‧ω‧‵)   2018-09-11 13:09:00
题目不是最大只有100题吗
作者: cateran (云川闲步)   2018-09-11 16:25:00
用hash table?
作者: dou0228 (7777)   2018-09-11 17:12:00
不是才 100 题?
楼主: Ori185 (Ori185)   2018-09-11 20:06:00
不太懂各位的意思,如果最多100题,最大不就会创建100*70W的阵列吗?https://glot.io/snippets/f4pbyyxurv/raw参照一楼的建议,已经不会有内存的问题了,可是4与5测稚还是差一点数字,请问哪里有问题呢
作者: sarafciel (Cattuz)   2018-09-12 11:14:00
你有考虑溢位后才会跳最大值的情况吗699999 3 699998 像这种测资超界就不算的会得到699999但按题意他的最大值应该是699999+3+699998=700000
作者: alan23273850   2018-09-12 13:46:00
刚刚想了一下,如果针对每个数字多加一个负补数进去例如 699999 就加个 -1,3 就加个 -699997,这样会形成一个 2 倍长度的阵列,如果题目转成总和不超过700000 的条件下要找到最大和,这样是否就形成另类的背包问题呢?值得注意的是因为原本的题目本来就都是正整数,因此遇到 0 可以直接当成 700000好像也不能当成背包问题,不过至少全部总共有 3^n个... 好像也不太对 算惹
楼主: Ori185 (Ori185)   2018-09-13 23:44:00
感谢各位回答,回文的c大的程式码已经AC过了,希望我赶快弄懂就是了…

Links booklink

Contact Us: admin [ a t ] ucptt.com