zoukankan      html  css  js  c++  java
  • 【hihoCoder】#1513 : 小Hi的烦恼

    题解

    我会五维数点辣

    只要用个bitset乱搞就好了

    记录一下rk[i][j]表示第j科排名为i的是谁
    用30000 * 5个大小为30000的bitset
    s[i][j]是一个bitset表示第j科,排名为1 - i的人是多少

    最后只要对于每个人,把每一维小于它的集合and起来,然后用count()函数输出里面1的个数

    代码

    #include <iostream>
    #include <algorithm>
    #include <cstdio>
    #include <cstring>
    #include <vector>
    #include <set>
    #include <cmath>
    #include <bitset>
    #define enter putchar('
    ')
    #define space putchar(' ')
    //#define ivorysi
    #define pb push_back
    #define MAXN 30005
    #define mo 974711
    #define pii pair<int,int>
    #define mp make_pair
    #define fi first
    #define se second
    
    using namespace std;
    typedef long long int64;
    typedef double db;
    template<class T>
    void read(T &res) {
        res = 0;char c = getchar();T f = 1;
        while(c < '0' || c > '9') {
    	if(c == '-') f = -1;
    	c = getchar();
        }
        while(c >= '0' && c <= '9') {
    	res = res * 10 - '0' + c;
    	c = getchar();
        }
        res = res * f;
    }
    template<class T>
    void out(T x) {
        if(x < 0) {x = -x;putchar('-');}
        if(x >= 10) out(x / 10);
        putchar('0' + x % 10);
    }
    int N;
    bitset <MAXN> s[MAXN][6];
    int a[MAXN][6],rk[MAXN][6];
    void Solve() {
        read(N);
        for(int i = 1 ; i <= N ; ++i) {
    	for(int j = 1 ; j <= 5 ; ++j) {
    	    read(a[i][j]);
    	    rk[a[i][j]][j] = i;
    	}
        }
        for(int j = 1 ; j <= 5 ; ++j) {
    	for(int i = 1 ; i <= N ; ++i) {
    	    s[i][j] = s[i - 1][j];
    	    s[i][j][rk[i][j]] = 1;
    	}
        }
        for(int i = 1 ; i <= N ; ++i) {
    	bitset <MAXN> tmp;
    	tmp = s[a[i][1] - 1][1];
    	for(int j = 2 ; j <= 5 ; ++j) tmp &= s[a[i][j] - 1][j];
    	out(tmp.count());enter;
        }
    }
    int main() {
    #ifdef ivorysi
        freopen("f1.in","r",stdin);
    #endif
        Solve();
    }
    
  • 相关阅读:
    第2章 面试流程
    py面试指导系列-第1章 py服务端工程师面试指导
    十月的第一天
    I shall return
    k8S
    Eclipse编辑器基本设置
    Windows 下有什么软件能够极大地提高工作效率
    Bootstrap 轻量级后台管理系统模板--ACE使用介绍
    2014年将会受欢迎的IT技能--你有多少哪?
    面向程序员的数据库访问性能优化法则
  • 原文地址:https://www.cnblogs.com/ivorysi/p/9186496.html
Copyright © 2011-2022 走看看