对于每一行,用一个2^12个01来表示,其中这一行就是其中所有为1的点所代表的行(i二进制中包含的行)的max的min,然后就可以支持取max和min了,查询只需要枚举答案即可

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 100005
4 bitset<5005>f[N];
5 int n,m,q,p,x,y,a[21][N],id[N][21];
6 bool cmp(int x,int y){
7 return a[x][p]>a[y][p];
8 }
9 int main(){
10 scanf("%d%d%d",&m,&n,&q);
11 for(int i=1;i<=n;i++)
12 for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);
13 for(int i=1;i<=m;i++){
14 for(int j=1;j<=n;j++)id[i][j]=j;
15 p=i;
16 sort(id[i]+1,id[i]+n+1,cmp);
17 }
18 for(int i=1;i<=n;i++)
19 for(int j=0;j<(1<<n);j++)
20 if (j&(1<<i-1))f[i][j]=1;
21 for(int i=1;i<=q;i++){
22 scanf("%d%d%d",&p,&x,&y);
23 if (p==1)f[++n]=(f[x]|f[y]);
24 if (p==2)f[++n]=(f[x]&f[y]);
25 if (p==3){
26 int t=0;
27 for(int j=1;j<=n;j++){
28 t|=(1<<id[y][j]-1);
29 if (f[x][t]){
30 printf("%d\n",a[id[y][j]][y]);
31 break;
32 }
33 }
34 }
35 }
36 }

最新文章

  1. HTML5基础总结
  2. HttpClient总结一之基本使用
  3. Ogre初入手:最简单的ogre程序骨架
  4. 欢迎参加MVP主讲的Windows 10开发线上课程
  5. 【Python】内置数据类型
  6. Spring框架学习之第8节
  7. 在smarty模板中取不到Cookie的值解决方案
  8. UVALive 3977
  9. linq读书笔记1-linq 初步
  10. css多行文本居中
  11. CPU保护模式深入探秘
  12. Coco2dx-3.0中怎样调用LUA
  13. IBatis.net初步使用
  14. C++之const限定符
  15. bash脚本编程---循环
  16. 记一次sql优化——left join不走索引问题
  17. Linux服务器搭建相关教程链接整理
  18. web scraper 抓取分页数据和二级页面内容
  19. java xml 转 json
  20. jenkins自动构建站点

热门文章

  1. 题解 「2017 山东一轮集训 Day5」苹果树
  2. 洛谷2046 NOI2010海拔
  3. Proxypool代理池搭建
  4. 【实验向】问题:假设计算机A和计算机B通信,计算机A给计算机B发送一串16个字节的二进制字节串,以数组形式表示:
  5. 工厂模式--摆脱你日复一日new对象却依旧单身的苦恼!
  6. 【UE4 C++ 基础知识】&lt;7&gt; 容器——TSet
  7. MySQL:怒刷牛客网“sql实战”
  8. $dy$讲课总结
  9. n阶行列式计算
  10. 洛谷 P4587 [FJOI2016]神秘数