题目链接

题意:给定n个五维空间上的点,以及m组询问,每组询问给出一个点,求五个维度都不大于它的点有多少个,强制在线。

神仙题

单独考虑每个维度,把所有点按这个维度上的大小排序,然后分成T块,每块用一个bitset记录这个块以及之前的块中包含的点的集合的前缀和,并用mx[i][j]来记录第i维上大小为j的点所对应的最右边的块。对于每个询问的点,也是单独考虑每个维度,找到每个维度上对应的块,把这个块之前的块的前缀和加上,然后再暴力加上这个块中所有当前维度不超过它的点,五个维度取个交集就行了。

预处理复杂度$O(n+\frac{nT}{B})$,单次询问复杂度$O(\frac{n}{T}+\frac{n}{B})$,总复杂度$O(n+\frac{nT}{B}+\frac{qn}{T}+\frac{qn}{B})$,理论上T=B(约为64)时复杂度最低。

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e4+,M=,inf=0x3f3f3f3f;
struct D {
int x,i;
bool operator<(const D& b)const {return x<b.x;}
} a[][N];
int n,m,k,sqrtn,in[N],mx[][N],L[N/M],R[N/M],nb;
bitset<N> bs[][N/M],ans,now;
int solve(int* b) {
ans.set();
for(int i=; i<; ++i) {
now.reset();
int j=mx[i][b[i]];
if(j>)now|=bs[i][j-];
for(int k=L[j]; k<n&&a[i][k].x<=b[i]; ++k)now.set(a[i][k].i);
ans&=now;
}
return ans.count();
}
int main() {
int T;
for(scanf("%d",&T); T--;) {
scanf("%d%d",&n,&m);
memset(L,-,sizeof L);
memset(mx,,sizeof mx);
for(int j=; j<n; ++j) {nb=(in[j]=j/M)+; if(!~L[in[j]])L[in[j]]=j; R[in[j]]=j;}
for(int i=; i<; ++i)for(int j=; j<nb; ++j)bs[i][j].reset();
for(int i=; i<n; ++i)
for(int j=; j<; ++j)scanf("%d",&a[j][i].x),a[j][i].i=i;
for(int i=; i<; ++i)sort(a[i],a[i]+n);
for(int i=; i<; ++i) {
for(int j=; j<n; ++j) {
mx[i][a[i][j].x]=in[j];
bs[i][in[j]].set(a[i][j].i);
}
for(int j=; j<=m; ++j)mx[i][j]=max(mx[i][j],mx[i][j-]);
for(int j=; j<nb; ++j)bs[i][j]|=bs[i][j-];
}
scanf("%d",&k);
for(int ans=; k--;) {
int b[];
for(int i=; i<; ++i)scanf("%d",&b[i]),b[i]^=ans;
printf("%d\n",ans=solve(b));
}
}
return ;
}

HihoCoder - 1236 Scores (五维偏序,分块+bitset)的更多相关文章

  1. 2015北京网络赛 J Clarke and puzzle 求五维偏序 分块+bitset

    Clarke and puzzle Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/acmicpc20 ...

  2. HihoCoder 1236 Scores - bitset - 分块

    Kyle is a student of Programming Monkey Elementary School. Just as others, he is deeply concerned wi ...

  3. hihoCoder.1513.小Hi的烦恼(bitset 五维偏序)

    题目链接 五维偏序,对每一维维护bitset,表示哪儿为1(比它大),然后5个bitset与起来就能得到答案了. 具体实现可以用5*n个bitset,按排名搞个前缀和. 复杂度\(O(n^2/w)\) ...

  4. HihoCoder - 1513 bitset处理五维偏序

    题意:给出\(n<3e4\)个有序组\((a,b,c,d,e)\),求对第\(i\)个有序组有多少个\(j\)满足\((a_j<a_i,b_j<b_i,c_j<c_i,d_j& ...

  5. 【整理】STL中的bitset(二进制华丽解决假五维偏序题)

    ------------更多Bitset的运用,请看这里http://www.cnblogs.com/hua-dong/p/8519739.html. 由于在学cdq分治,看到了这道题.先来看一道题目 ...

  6. hiho#1513 : 小Hi的烦恼 五维偏序

    hiho#1513 : 小Hi的烦恼 五维偏序 链接 hiho 思路 高维偏序用bitset,复杂度\((\frac{n^2}{32})\) 代码 #include <bits/stdc++.h ...

  7. hihocoder #1236 Scores (15北京赛区网络赛J) (五维偏序,强制在线,bitset+分块)

    链接:http://hihocoder.com/problemset/problem/1236 思路; 有n个五维的向量,给出q个询问,每个询问是一个五维向量,问有多少个向量没有一维比这个向量大.并且 ...

  8. 偏序 分块+bitset

    题目描述 给定一个有\(n\)个元素的序列,元素编号为\([1,n]\),每个元素有\(k\)个属性\(p_1,p_2,p_3,...,p_k\) ,求序列中满足 \(i<j\)且 \(1 \l ...

  9. CDQ分治嵌套模板:多维偏序问题

    CDQ分治2 CDQ套CDQ:四维偏序问题 题目来源:COGS 2479 偏序 #define LEFT 0 #define RIGHT 1 struct Node{int a,b,c,d,bg;}; ...

随机推荐

  1. Lambda加自定义比较器实现两个列表的合并

    一次项目有这样的需求,本地存储了json数据,可以转化为对应的List列表,现在需要更新,从服务器那里获取最新的数据更改.总的来说就是本地有个List表,如果数据需要更新,则会向服务器发送请求来获取需 ...

  2. jQuery垂直滑动切换焦点图

    在线演示 本地下载

  3. 20165101刘天野 2018-2019-2《网络对抗技术》Exp5 MSF基础应用

    目录 20165101刘天野 2018-2019-2<网络对抗技术>Exp5 MSF基础应用 1. 实践内容 1.1一个主动攻击实践,如ms08_067; (1分) 1.2 一个针对浏览器 ...

  4. iOS项目开发优秀文章汇总

    UI界面 iOS和Android 界面设计尺寸规范  http://www.alibuybuy.com/posts/85486.html iPhone app界面设计尺寸规范  http://www. ...

  5. C++命名(自定义)

    1.自定义函数 void GetName(): 2.布尔型变量 BOOL ISOPEN:

  6. Spring AOP(5)-- 注解

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?><beans xml ...

  7. HTTP与抓包

    HTTP就是超文本传输协议,底层使用socket TCP长连接,基于请求与响应,是同步请求. socket 绝对多数语言都是支持socket的,底层走的是二进制传输. HTTP协议实际上是对Socke ...

  8. DIKW:数据、信息、知识、智慧的金字塔层次体系

    http://www.ciotimes.com/ProCase/85417.html 前言 知识对于个人.组织的重要性已经不言而喻.可以说,管理与应用知识的能力已经成为企业的核心竞争力. 知识如此重要 ...

  9. 利用OPENSSH自身记录密码

    大家都知道,OPENSSH是基于Linux下,一款开源,安全性不错的Linux SSH会话连接工具. 在渗透当中,当我们get root了.我们如何来记录Linux管理员登陆过的SSH? 想法如下: ...

  10. Java_io__BIO_NIO_AIO

    1. http://stevex.blog.51cto.com/4300375/1284437 http://www.cnblogs.com/zhuYears/archive/2012/09/28/2 ...