紫书第四章,最有毒的一题,题目意思有毒,翻译有毒,做法有毒。
搬运一篇别人的题解吧,我也是照着别人写的
只要暴力所有A、B的组合,看解是不是可行的并找出最优解。
(设有n个元素,每个P占x个字节,每个Q占y个字节。)
怎么判断一个解是否可行呢?想想如果Q连续存储,至少也得消耗n*y个字节,一个AB方案,如果算出的字节小于该值就是不可行的。否则这个内存越小,解就越优,依据这个来更新最优解ansA,ansB,ansN。
看着好复杂的题目。看了半天不懂,看网上人家的解释也是一头雾水。于是花了好久把他翻译并理解。翻译只是大概翻翻,但和原意基本一致,括号内的内容是我最终理解的内容。
翻译如下:
Tuple博士正在给ACM公司研究数据挖掘。其中一个子工程是关于P、Q两个数组的,两个数组各含N组数据(这个“组”的单位是record,不知道怎么翻译好。论好好学习英语的重要性。)。这N个record的数据从0到N-1命名。数组P包含含密钥的类似哈希的结构。P用来给程序定位要用哪个record,且这个数据的对应的Q里的record待会会从Q数组里恢复出来(如紫书中文的理解就是知道P的第i个record的偏移量求Q第i个数据的偏移量)。
数组P中的每个record长度为Sp字节,Q的每个record长Sq字节。Tuple酱需要最最高效地执行这个程序,因为这是整个数据挖掘一直要用到的地方。但是坑爹的是Sp和Sq只在运行时知道其大小,没法在编译时进行优化(