提交记录 119018


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_cc_v41_agg1 mmms4k. 测测你的短整数矩阵乘法-4k Wrong Answer 0 17.925 ms 192016 KB C++17 2.21 KB
提交时间 评测时间
2026-10-01 18:34:26 2026-10-01 18:34:28
// ===== REFERENCES =====
// [1] duck.ac 提交 **#119000** <https://duck.ac/submission/119000>(空引擎探针:Time 0.005952 ms /
//     Memory 8 KiB)—— 本席用它证明交互库在窗内只花 5.952 µs、只写 2 页。
// [2] duck.ac 提交 **#119008** <https://duck.ac/submission/119008>(纯 ALU 标尺 200 M 次自旋:
//     榜面 334.994175 ms ↔ 同件自定义测试 333.877763 ms ⇒ 榜面/本机 = 1.003344)。
// [3] duck.ac 提交 **#118894** <https://duck.ac/submission/118894>(本账号现役最好 530.080855 ms)。
// [4] FAQ <https://duck.ac/faq>:C++17 = g++ 9.3.0 (Ubuntu 9.3.0-10ubuntu2),64 位,
//     `-static -U_FORTIFY_SOURCE -O2 -std=c++17`;判题机 i3-8100 @ 3.60 GHz。
// [5] 判题机规格(公开 JudgeDuck-OS):`time_ns = CPU_CLK_UNHALTED.THREAD / 3.6e9`;
//     `memory_kb` = 窗内被写过的页数 × 4 KiB。
// 合规:题目页明示「你提交的代码将会被公开」;本件为**诊断标尺**,不含任何第三方正文。
// ===== 思路 =====
// 【席位 s4cn_(2026-10-01,复红后第 43 席)· 本发 = **「榜面通道的每页首触税」的第一次直接测量**】
// 【为什么重要】本席已把 (1460)⑤ 的残差钉成:榜面 − 本机 = +23.77 M 拍(+1.2617%),其中纯计算侧
//   ≤0.334%(ALU 标尺 #119008),**访存侧 ≥0.925%(≈17.5 M 拍 = 4.85 ms)**。而队内**全部**首触税
//   读数(写 854 / 读 915 拍·页⁻¹,本席任务 B 三判据复现)都来自**自定义测试通道**——榜面通道的
//   税价**从未被测过**。若榜面税价显著更高(例如 ×1.5),引擎的 49,568 个受税页就要多付
//   ≈0.5~1.7e7 拍 ⇒ **残差的机理就是它**(而"缩小工作集"的经济学随之改变);若同价,则残差在
//   **流式效率**上,与页数无关。
// 【本发的单变量】`matrix_multiply` = **纯首触**(48,000 个全新页,每页一条 64 B NT 行,无流式)
//   + **纯 ALU 标尺 5 M 次**(内联 `imul/xor` 串行链,用来把"通道时间基"从总量里扣掉)。
//   一次读数即可解出 **榜面 NT 单行首触税(拍/页)**,与同件的自定义测试读数同位置对比。
// 【判词】榜面税价 / 本机税价 ≥ 1.2 ⇒ 残差机理 = 首触税(**页数敏感**,全队所有"减页"判据需重价);
//   ≈ 1.0 ⇒ 残差在流式效率(与页数无关)。
// 【闸门】发前现读 /status;`--dry` 过。
#pragma GCC target("avx2")
#include <immintrin.h>
void matrix_multiply(int n, const short *A, const short *B, short *C) {
    (void)n; (void)A; (void)B;
    static unsigned char R[48000u * 4096u] __attribute__((aligned(4096)));
    const __m256i z = _mm256_setzero_si256();
    for (unsigned i = 0; i < 48000u; i++) {
        unsigned char *p = R + (unsigned long long)i * 4096u;
        _mm256_stream_si256((__m256i *)(p),      z);
        _mm256_stream_si256((__m256i *)(p + 32), z);
    }
    _mm_sfence();
    unsigned long long x = 88172645463325252ULL;
    for (unsigned long long i = 0; i < 5000000ULL; i++) {
        x = x * 6364136223846793005ULL + 1442695040888963407ULL;
        x ^= x >> 29;
    }
    __asm__ __volatile__("" : "+r"(x) : : "memory");
    C[0] = (short)x;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #117.925 ms187 MB + 528 KBWrong AnswerScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-11-04 18:47:21 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠