zoukankan      html  css  js  c++  java
  • 【hiho】 147周 “五维数点” 问题【bitset优化】

    题目来源

    hiho一下 第147周

    “五维数点”问题

    现在有n个在五维空间中的点(X_i,Y_i,Z_i,Q_i,W_i)。现在对于每个点,我们需要知道所有坐标均比它小的点的数量。
    转化为集合操作,用bitset 的and 来模拟2个集合之间的交集,优化后的时间复杂度为成O(N^2/32)

    AC code

    #include<iostream>
    #include<bitset>
    #include<cstdio>
    using namespace std;
    #define maxn 30010
    
    bitset<maxn> nums[5][maxn];
    
    int nodes[maxn][5];
    
    int order[maxn];
    
    /*
    非常的巧妙,充分地利用了学生的排名
    */
    int main()
    {
        int N,i,j;
        scanf("%d",&N);
        for(i=0;i<N;i++)
            for(j=0;j<5;j++)
                scanf("%d",&nodes[i][j]);
    	// 时间复杂度O(N)
        for(i=0;i<5;i++)
        {
            for(j=0;j<N;j++)
            {
    			/*order数组表示排名
    			order[a]=b
    			排名为a的人,所在的位置是b
    			*/
    			
                order[nodes[j][i]]=j+1;
            }
            for(j=2;j<=N;j++)
            {
                nums[i][order[j]]=nums[i][order[j-1]];
                nums[i][order[j]][order[j-1]]=1;
            }
        }
        for(i=1;i<=N;i++)
        {
            bitset<maxn> tmp;
            tmp = nums[0][i] & nums[1][i] & nums[2][i] & nums[3][i] & nums[4][i];
            printf("%lu
    ",tmp.count());
        }
        return 0;
    }
    
    
  • 相关阅读:
    C#删除一个字符串数组中的空字符串
    .Net后台获取客户端信息
    Java Script
    ECMAScript闭包,ECMAScript对象
    Java Script函数、变量、对象
    JavaScript3
    JavaScript-2
    变量
    8.22收获
    html
  • 原文地址:https://www.cnblogs.com/shengwang/p/9761555.html
Copyright © 2011-2022 走看看