hihoCoder 1236 bitset + 分块
来源:互联网 发布:剑网三纣炀的捏脸数据 编辑:程序博客网 时间:2024/06/05 00:50
hihoCoder 1236
题意:给一份成绩单,成绩单上有5门成绩,成绩范围在1~m,然后询问q次,每次给一个人的成绩问每科成绩的分数都低于他的人有多少。
思路:bitset里标记一下成绩在某个数值以下有哪些人,最后5个bitset的交集就是答案。
但是空间需要
另外这个题强制在线,每次询问的成绩需要和上次询问的答案做异或。
#include <bits/stdc++.h>using namespace std;const int M = 5e4 + 10;struct Node{ int v, pos; Node(){} Node(int a, int b):v(a), pos(b){} bool operator <(const Node &i) const { return v == i.v ? pos < i.pos : v < i.v; }}node[6][M];bitset<M>bt[6][300], ans, tmp;main(){ // freopen("in.in", "r", stdin); int t; scanf("%d", &t); while(t--){ int n, m; memset(node, 0, sizeof node); for(int i = 0; i < 6; i++) for(int j = 0; j < 300; j++) bt[i][j].reset(); scanf("%d %d", &n, &m); for(int i = 0; i < n; i++){ for(int j = 0; j < 5; j++){ scanf("%d", &node[j][i].v); node[j][i].pos = i; } } int sqr = sqrt(n); for(int i = 0; i < 5; i++) sort(node[i], node[i] + n); int pb = 0; for(int i = 0; i < 5; i++){ for(int j = 0; j < n; j++){ if(j / sqr != pb) bt[i][pb + 1] = bt[i][pb]; bt[i][j / sqr].set(node[i][j].pos); pb = j / sqr; } } int q; scanf("%d", &q); int pre = 0, query[6]; while(q--){ ans.reset(), ans.flip(); for(int i = 0; i < 5; i++){ scanf("%d", &query[i]); query[i] ^= pre; } for(int i = 0; i < 5; i++){ tmp.reset(); int p = lower_bound(node[i], node[i] + n, Node(query[i], n)) - node[i] - 1; int pp = p / sqr; if(pp != 0) tmp = bt[i][pp - 1]; for(int j = pp * sqr; j < n; j++){ if(node[i][j].v > query[i]) break; tmp.set(node[i][j].pos); } ans &= tmp; } pre = ans.count(); printf("%d\n", pre); } }}
0 0
- hihoCoder 1236 bitset + 分块
- Hihocoder 1236 Scores【分块+bitset】
- hihoCoder 1236 Scores(bitset+分块)
- hihoCoder 1236 Scores 五维偏序 (分块 + bitset)
- HihoCoder 1236 Scores (五维偏序bitset+分块)
- hihocoder 1236 (分块+bitset乱搞)
- hihoCoder 1236:Scores(bitset+分块)
- [五维偏序 分块 bitset] HihoCoder #1236 2015北京网络赛 J Scores
- HihoCoder-1236-Scores【bitset】【五维偏序】
- hiho 1236 Scores 五维偏序 分块+bitset优化
- hihoCoder 1236 Scores 解题报告(bitset + 分段暴力)
- 解题报告:hihoCoder_1236 Scores 分块bitset暴力
- 【图的dfs + bitset+ 套路】hihocoder. 1041
- hihoCoder--1041 国庆出游(dfs + bitset)
- 2015北京网络赛 J Clarke and puzzle 分块+bitset
- 2015北京网络赛 J Scores bitset+分块
- hihocoder 1041 国庆出游 (DFS + bitset 好题)
- Hihocoder 147周 小HI的烦恼 bitset(技巧)
- 浅析java中的hashcode()方法与equals()方法
- SQL server的增删改查练习
- VMware View 5.0从菜鸟到高手系列 1 -环境准备篇
- PowerShell介绍 第七回 变量
- Yii2.0 对数据库查询的一些简单的操作
- hihoCoder 1236 bitset + 分块
- Shapefile与字符集编码设置之ArcGIS for Server
- ID3DXSprite :: Draw 实现平移旋转等方法
- TCP/IP的工作方式
- cf#329-A. 2Char-烦人的水题
- VMware View 5.0从菜鸟到高手系列 2 -安装View Connection Server篇
- Java递归实现删除树形结构的任一节点
- PowerShell介绍 第八回 数组
- ANT教程之七 Ant构建项目