博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hihoCoder.1513.小Hi的烦恼(bitset 五维偏序)
阅读量:5021 次
发布时间:2019-06-12

本文共 965 字,大约阅读时间需要 3 分钟。

五维偏序,对每一维维护bitset,表示哪儿为1(比它大),然后5个bitset与起来就能得到答案了。

具体实现可以用5*n个bitset,按排名搞个前缀和。

复杂度\(O(n^2/w)\)(本质是暴力的优化)。

//1284ms    565MB#include 
#include
#include
#include
#define gc() getchar()const int N=30005;int rk[N][5],pos[N];std::bitset
bit[5][N];inline int read(){ int now=0;register char c=gc(); for(;!isdigit(c);c=gc()); for(;isdigit(c);now=now*10+c-'0',c=gc()); return now;}int main(){ int n=read(); for(int i=1; i<=n; ++i) for(int j=0; j<5; ++j) rk[i][j]=read(); for(int j=0; j<5; ++j) { for(int i=1; i<=n; ++i) pos[rk[i][j]]=i; for(int i=2; i<=n; ++i) bit[j][i]=bit[j][i-1], bit[j][i].set(pos[i-1]); } std::bitset
ans; for(int i=1; i<=n; ++i) { ans.set(); for(int j=0; j<5; ++j) ans&=bit[j][rk[i][j]]; printf("%d\n",ans.count()); } return 0;}

转载于:https://www.cnblogs.com/SovietPower/p/9783475.html

你可能感兴趣的文章
发布开源库到JCenter所遇到的一些问题记录
查看>>
第七周作业
查看>>
函数式编程与参数
查看>>
flush caches
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
ACM_hdu1102最小生成树练习
查看>>
MyBatis源码分析(一)--SqlSessionFactory的生成
查看>>
android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
查看>>
CTF常用工具之汇总
查看>>
java的面向对象 (2013-09-30-163写的日志迁移
查看>>
HDU 2191 【多重背包】
查看>>
51nod 1433 0和5【数论/九余定理】
查看>>
【AHOI2013复仇】从一道题来看DFS及其优化的一般步骤和数组分层问题【转】
查看>>
less 分页显示文件内容
查看>>
如何对数据按某列进行分层处理
查看>>
[Qt] this application failed to start because it could not find or load the Qt platform plugin
查看>>
Git Submodule管理项目子模块
查看>>
学会和同事相处的30原则
查看>>
NOJ——1568走走走走走啊走(超级入门DP)
查看>>
文件操作
查看>>