题解 P4117 【[Ynoi2018]五彩斑斓的世界】

本文介绍了如何使用AVX512指令集优化解决Ynoi2018的五彩斑斓世界问题。通过分析题目,确定使用暴力方法并进行指令集优化。文中详细解释了AVX512指令集的基本数据类型和关键操作,并给出了代码实现,实现了复杂度为O(nm/16)的解决方案,但要注意该优化可能不适用于所有在线评测系统。
摘要由CSDN通过智能技术生成

题目链接

我觉得AVX2指令集不够爽,于是写了AVX512.到官网查了一天手册,直接拿下最优解

Solution [Ynoi2018]五彩斑斓的世界

题目大意:给定一个长度为\(n\)的序列.每次将\([l,r]\)内大于\(x\)的数减\(x\).询问\([l,r]\)\(x\)出现了多少次

分析:还能有啥分析,直接暴力,指令集优化一下就可以了

所有函数都可以在Intel手册查到

首先,既然我们要用指令集,得\(CPU\)资瓷才行

#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;
}

将如上代码丢入在线\(IDE\),得到评测姬\(CPU\)型号

注意:\(Luogu\)采用集群评测,每次得到的\(CPU\)型号不一定相同.(也就是过不了多交几次的原理?)
在我这儿,得到的型号为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值