Hiho coder 1236 2015 北京网络赛 Score
五维偏序。。一开始被吓到了,后来知道了一种BITSET分块的方法,感觉非常不错。
呆马:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <vector>
#include <bitset>
#define inf 1000000007
#define maxn 52000
#define maxm 520 using namespace std; struct score
{
int x,y;
friend bool operator <(score a, score b)
{
return a.x<b.x;
}
}s[][maxn]; int n,m,p,num,block;
int bel[maxn],l[maxm],r[maxm];
int a[][maxn];
bitset<> b[][maxm];
bitset<> now[]; int main()
{
int Case;
scanf("%d",&Case);
for (int i=;i<=;i++) b[i][].reset();
for (int o=;o<=Case;o++)
{
scanf("%d%d",&n,&m);
for (int j=;j<=n;j++)
for (int i=;i<=;i++)
{
scanf("%d",&a[i][j]);
s[i][j].x=a[i][j];
s[i][j].y=j;
}
for (int i=;i<=;i++)
{
sort(s[i]+,s[i]+n+);
sort(a[i]+,a[i]+n+);
}
int block=sqrt(n);
int num=n/block+(n%block!=);
for (int i=;i<=n;i++) bel[i]=(i-)/block+;
for (int i=;i<=num;i++) l[i]=(i-)*block+;
for (int i=;i<=num;i++) r[i]=i*block;
r[num]=n;
for (int i=;i<=;i++)
for (int j=;j<=num;j++)
{
b[i][j]=b[i][j-];
for (int k=l[j];k<=r[j];k++)
b[i][j][s[i][k].y]=;
}
scanf("%d",&p);
int x[],ans=;
for (int q=;q<=p;q++)
{
for (int i=;i<=;i++) scanf("%d",&x[i]);
for (int i=;i<=;i++) x[i]^=ans;
for (int i=;i<=;i++) now[i].reset();
for (int i=;i<=;i++)
{
int tmp=upper_bound(a[i]+,a[i]+n+,x[i])-a[i]-;
if (tmp==) continue;
now[i]=b[i][bel[tmp]-];
for (int j=l[bel[tmp]];j<=tmp;j++)
now[i][s[i][j].y]=;
}
now[]=now[]&now[]&now[]&now[]&now[];
ans=now[].count();
printf("%d\n",ans);
}
}
return ;
}
Score
Hiho coder 1236 2015 北京网络赛 Score的更多相关文章
- hihocoder 1236(2015北京网络赛 J题) 分块bitset乱搞题
题目大意: 每个人有五门课成绩,初始给定一部分学生的成绩,然后每次询问给出一个学生的成绩,希望知道在给定的一堆学生的成绩比这个学生每门都低或者相等的人数 因为强行要求在线查询,所以题目要求,每次当前给 ...
- 2015北京网络赛 D-The Celebration of Rabbits 动归+FWT
2015北京网络赛 D-The Celebration of Rabbits 题意: 给定四个正整数n, m, L, R (1≤n,m,L,R≤1000). 设a为一个长度为2n+1的序列. 设f(x ...
- 2015北京网络赛 J Scores bitset+分块
2015北京网络赛 J Scores 题意:50000组5维数据,50000个询问,问有多少组每一维都不大于询问的数据 思路:赛时没有思路,后来看解题报告也因为智商太低看了半天看不懂.bitset之前 ...
- 2015北京网络赛 Couple Trees 倍增算法
2015北京网络赛 Couple Trees 题意:两棵树,求不同树上两个节点的最近公共祖先 思路:比赛时看过的队伍不是很多,没有仔细想.今天补题才发现有个 倍增算法,自己竟然不知道. 解法来自 q ...
- 2015北京网络赛 J Clarke and puzzle 求五维偏序 分块+bitset
Clarke and puzzle Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/acmicpc20 ...
- 2015北京网络赛B题 Mission Impossible 6
借用大牛的一张图片:模拟 #include<cstdio> #include<cmath> #include<cstring> #include<algori ...
- 2015北京网络赛A题The Cats' Feeding Spots
题意:给你一百个点,找个以这些点为中心的最小的圆,使得这个圆恰好包含了n个点,而且这个圆的边界上并没有点 解题思路:暴力枚举每个点,求出每个点到其他点的距离,取第n大的点,判断一下. #include ...
- 2015北京网络赛 F Couple Trees 暴力倍增
Couple Trees Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/problemset/problem/123 ...
- 2015北京网络赛 G题 Boxes bfs
Boxes Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://hihocoder.com/contest/acmicpc2015beijingonl ...
随机推荐
- 利用activeX控件在网页里自动登录WIN2003远程桌面并实时控制
首先要自己配置并打开受控端的WEB远程桌面服务,这个在“添加/删除windows组件”里有,我只在windows 2003 server里试过,没试过XP.下面我们在客户端安装微软提供的远程桌面客户端 ...
- 对拍老是忘记的看这里:bat代码
需要写三个程序,makedata.exe 产生测试数据, program1.exe 是你要检测的程序,program2.exe 往往是一个正确但效率不高(暴力的居多)的程序. 代码很简单,稍作解释:l ...
- ASP.NET State Server 服务 sessionState
在发布ASP.NET网站的时候,出现state server错误:Server Error in '/' Application.----------------------------------- ...
- 一起来做chrome扩展《AJAX请求》
chrome在一次更新之后,出于安全考虑,完全的禁止了content_script从https向http发起ajax请求,即使正常情况下也会在console里给出提示.这对于WEB来讲是好事,但对于扩 ...
- [uva12170]Easy Climb
还是挺难的一个题,看了书上的解析以后还是不会写,后来翻了代码仓库,发现lrj又用了一些玄学的优化技巧. #include <algorithm> #include <iostream ...
- select case巧用 oracle
在做报表的时候,经常会用到分段统计数据,这时候,case就比较有用了: 小例子: SELECT sh.dc_code, g.bg_code, TO_CHAR ( ...
- Mysql5.6.17 zip版本安装
1.把 mysql解压到自定义 D:\mysql-5.6.17-W642.我的电脑--属性--高级--环境变量--系统变量--新建系统环境变量 变量名:MYSQL_HOME 变 ...
- 《linux内核设计与实现》实践之模块及深入
<linux内核设计与实现>实践之模块及深入 写在前面的话. 基础模块部分我已经做完了,设计到的知识点无非就是,编写模块代码,编写Makefile文件,加载模块和卸载模块部分.由于大家都 ...
- 10个核心的Linux面试问题与答案
http://www.geekfan.net/8571/ compgen -c,可以打印出所有支持的命令列表使用Linux 命令dirs可以将当前的目录栈打印出来.使用linux命令 ’disown ...
- AngularJS基础知识2
一.angularJS双向数据绑定 利用双向数据绑定,不仅能把数据模型的变化同步到视图上面,还可以利用双向数据绑定的特性来做一些样式上面的控制. 双向数据绑定用处很多,不仅仅是像知识点1中的那个例子, ...