会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
对每个样本先做残差融合 hi=xi+αri。energy 只累加前 l 个有效位置的 hi2,分母 d=max(l,1),RMS=energy/d+ϵ。有效位置输出 yi=γi⋅hi/RMS+βi,下标从 0 计时也就是 i<l;无效位置直接输出 0,不能把 γi,βi 加进去。l=0 时没有有效位,energy 为 0,整段 y 都是 0。若有效位上的 hi 全是 0 且 ϵ=0,则 RMS 为 0,此时 hi/RMS 没有定义,但每个有效 hi 必然是 0,归一化项按 0 处理,有效位只保留 βi。
实现时按样本各扫一遍。浮点要保留两位小数,并且是标准四舍五入:恰好满五时远离零。不要用 C++ 的 printf("%.2f")、Python 的 format 或 Java 的 String.format("%.2f"),它们对能精确表示的 0.125、1.125 会走银行家舍入,印成 0.12、1.12。绝对值小于 0.005 的数一律写成 0.00,这样不会出现 -0.00。同一行用单个空格分隔,| 两侧各有一个空格。γ,β 按位置下标取,不要误用样本编号。
复杂度分析
每个样本只扫常数遍长度为 n 的向量,总时间 O(mn),额外空间 O(n)。m≤200,n≤256,线性扫描足够。h 最大约 1.001×1011,平方和约 1024,必须用浮点累加,放进 32 位或 64 位整数会溢出。