记一次由bitset引起的21发TLE

Posted theroadtothegold

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记一次由bitset引起的21发TLE相关的知识,希望对你有一定的参考价值。

1、直接用bitset进行 & | ^ 操作,它的效率取决于bitset的长度

     长为1e5的bieset进行1e5次 位运算,1s+

2、any(),none()也与长度有关

     长为1e5的bitset进行1e5次,0.8s+

3、all()取决于里面1的数量,如果全是1的话,根any()差不多

#include<cstdio>
#include<bitset>

using namespace std;

#define N 100000

bitset<N>b[2],c; 

int main()
{
    int sum=0;
    for(int i=1;i<=100000;++i) 
    {
        c=b[0]&b[1];
    //    if(c.any()) sum++;
    }
}

 

血泪纪念。。

我还自以为改成用bitset更快了。。死磕3小时。。。

技术图片技术图片技术图片技术图片

 

以上是关于记一次由bitset引起的21发TLE的主要内容,如果未能解决你的问题,请参考以下文章

高并发服务优化篇:详解一次由读写锁引起的内存泄漏

记录一次由事务可重复读引起的问题

记一次由tcp_tw_recycle参数引发的血案

记一次由Redis分布式锁造成的重大事故,避免以后踩坑!

记一次由sql注入到拿下域控的渗透测试实战演练(上)

记一次由XSS一步一步获得服务器权限的渗透测试过程