请求撤下所有暴力题解

P3397 地毯

水星湖 @ 2024-03-13 22:47:56

本来就是一道二维差分的板子,题解区一翻全都是说数据水然后直接暴力的


by scp020 @ 2024-03-13 23:28:35

@小粉兔 2.4ghz


by scp020 @ 2024-03-13 23:29:56

@Zemu_Ooo 不争论了。wssb。


by scp020 @ 2024-03-13 23:31:11

我电脑cpu太差了。


by 小粉兔 @ 2024-03-13 23:33:35

2.4 GHz 就是一秒 2.4e9 个指令吧。还不包括循环展开乱序发射什么的

X86-64 一个循环数组自增编译成

.L3:
        movdqa  xmm0, XMMWORD PTR [rax]
        add     rax, 16
        paddd   xmm0, xmm1
        movaps  XMMWORD PTR [rax-16], xmm0
        cmp     rdx, rax
        jne     .L3

类似物

每 6 条指令 2 次内存操作、1 次跳转,L1 缓存命中可以认为不消耗额外时间,分支预测成功率很高


by 小粉兔 @ 2024-03-13 23:33:55

别跑啊我电脑也才 3.20 GHz


by scp020 @ 2024-03-13 23:36:55

雾,貌似是的,我才疏学浅


by 小粉兔 @ 2024-03-13 23:37:39

这段代码可以看各个 OJ 评测机型号

#include <stdint.h>
#include <iostream>
#include <cpuid.h>
static void cpuid(uint32_t func, uint32_t sub, uint32_t data[4]) {
    __cpuid_count(func, sub, data[0], data[1], data[2], data[3]);
}
int main() {
    uint32_t data[4];
    char str[48];
    for(int i = 0; i < 3; ++i) {
        cpuid(0x80000002 + i, 0, data);
        for(int j = 0; j < 4; ++j)
            reinterpret_cast<uint32_t*>(str)[i * 4 + j] = data[j];
    }
    std::cout << str;
}

by scp020 @ 2024-03-13 23:39:05

我只查到了洛谷cpu的缓存是33m,不知道三级缓存各是多少。。。反正我电脑L1才320kb


by scp020 @ 2024-03-13 23:39:53

Platinum 8360H,24核,恐怖如斯


by scp020 @ 2024-03-13 23:43:12

简而言之:我呆在家里不知道外面cpu变化多块,就小丑了


上一页 | 下一页