hihoCoder 1236:Scores(bitset+分块)

来源:互联网 发布:linux update rc.d 编辑:程序博客网 时间:2024/06/06 14:01

传送门

题意:
求多维偏序下比给定值小的个数。

题解:

不多说,这种毒瘤题直接bitset+分块吧。。

#include<bits/stdc++.h>using namespace std;inline int rd(){    char ch=getchar();int i=0,f=1;    while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}    while(isdigit(ch)){i=(i<<1)+(i<<3)+ch-'0';ch=getchar();}    return i*f;}int n,m,S,cnt,v[300],lst;struct data{    int a[6];}a[50010];bitset<50010>win[6][300];vector< pair<int,int> >t[6];inline void getorder(int val,int id,bitset<50010> &A){    int pos=1;while(v[pos]<val&&pos<=cnt)++pos;    if(pos>1)A=win[id][pos-1];    pos=lower_bound(t[id].begin(),t[id].end(),make_pair(v[pos-1]+1,0))-t[id].begin();    while(pos<n&&t[id][pos].first<=val)        A.set(t[id][pos].second),++pos;}inline void solve(){    n=rd();m=rd();    S=sqrt(m)+1;    cnt=0;lst=0;    while(S*cnt<m)++cnt,v[cnt]=min(S*cnt,m);    for(int i=1;i<=5;i++){        t[i].clear();        for(int j=1;j<=cnt;j++)            win[i][j].reset();    }    for(int i=1;i<=n;i++)        for(int j=1;j<=5;j++){            a[i].a[j]=rd();            t[j].push_back(make_pair(a[i].a[j],i));            int pos=1;            while(v[pos]<a[i].a[j])++pos;            win[j][pos].set(i);        }    for(int i=1;i<=5;i++){        sort(t[i].begin(),t[i].end());        for(int j=2;j<=cnt;j++)            win[i][j]|=win[i][j-1];    }    int q=rd();    for(int i=1;i<=q;i++){        bitset<50010> tp;        bitset<50010> tp2;        tp.reset();tp2.reset();        tp|=(getorder(rd()^lst,1,tp2),tp2);        for(int j=2;j<=5;j++){            tp2.reset();            tp&=(getorder(rd()^lst,j,tp2),tp2);        }        lst=tp.count();        printf("%d\n",lst);    }}int main(){    int T;T=rd();    while(T--)solve();}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 河南省高校学生资助在线 河南省高校资助 河南中医药大学 河南零门槛落户 河南全面落地零门槛落户 河南财经政法 河南电视台法制频道 河南科技学院 河南职业学院 河南牧业经济学院 河南高校资助系统 河南省教育厅 河南服务平台 河南有哪些城市 河南省教育厅网站 河南有什么市 河南行政区划 河南有哪些市 河南消防信息网 石家庄到河南 河口 梅河口 老河口 云南河口 河口古镇 河口吧 河口镇 梅河口招聘 红河河口 河口景区 河口县 三河口镇 老河口机场 河口区 河口风景区 河口断桥 两河口 河口旅游 鸭河口水库 中国河口 清水河口岸