清澄 A1485. Catch The Penguins 抓企鹅
我们把南极大陆看成一个三维直角坐标系。
有N只企鹅,每只企鹅会在一定的时刻的出现,第i只企鹅在Ai时刻出现在坐标为(Bi,Ci,Di)的地方。
Xyz要在某一时刻在某一地方(X,Y,Z)撒一张大网,将(0,0,0)到(X,Y,Z)这个大长方体里的企鹅全都网进去捕捉回家(还没出现的企鹅就不会被捉进去了)。
为了快准狠而且保证不铺张浪费网,Xyz想知道不同时间不同地点撒网能抓到几个企鹅(这样的询问有Q个)。然后他再行动。
第二行到N+1行每行四个实数(Ai,Bi,Ci,Di),表示企鹅的出现时间和位置
第N+2行一个整数Q表示询问个数。
接下来Q行每行四个实数(T,X,Y,Z),表示询问的时间和位置。
0 0 0 0
2
1 1 1 1.0
1 1 1 -1
0
数据1~3 N,Q<=1000
数据4~6 N,Q<=5000
数据7~10 N,Q<=10000
数据11~14 N<=30000,Q<=10000
数据15~18 N<=10000,Q<=30000
数据19~20 N,Q<=30000
位运算。
四维分开计算。
按照某个维度从小到大排序询问和企鹅。用bitset状态压缩记录这一维中满足询问要求的企鹅有哪些。
然后求四维度答案的交集。
/*by SilverN*/
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<bitset>
using namespace std;
const int mxn=;
int n;
struct qe{
double w[];
int id;
}a[mxn],q[mxn];
bitset<> b[];
int ans[mxn];
int D=;
int cmp(const qe a,const qe b){return a.w[D]<b.w[D];}
int main(){
int i,j;
scanf("%d",&n);
for(i=;i<=n;i++){
scanf("%lf%lf%lf%lf",&a[i].w[],&a[i].w[],&a[i].w[],&a[i].w[]);
a[i].id=i;
}
int Q;
scanf("%d",&Q);
for(i=;i<=Q;i++){
scanf("%lf%lf%lf%lf",&q[i].w[],&q[i].w[],&q[i].w[],&q[i].w[]);
q[i].id=i;
b[i].set();
}
for(i=;i<=;i++){
D=i;
sort(a+,a+n+,cmp);
sort(q+,q+Q+,cmp);
int hd=;
bitset<>res;
res.reset();
for(j=;j<=Q;j++){
while(a[hd].w[D]<=q[j].w[D] && hd<=n){
res[a[hd].id]=;
hd++;
}
b[q[j].id]&=res;
}
}
for(i=;i<=Q;i++)printf("%d\n",b[i].count());
return ;
}
清澄 A1485. Catch The Penguins 抓企鹅的更多相关文章
- Tsinsen 1485 Catch The Penguins 抓企鹅 ——Bitset
[题目分析] 刚开始想的是KD-Tree去暴力求解. 写了半天还没有暴力得的分数多(说好的nlogn呢) 直接按照四个维度排序. 然后扫一遍,用bitset去维护,然后对于四个维度小于一个询问的结果取 ...
- B - Catch That Cow (抓牛)
B - Catch That Cow Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u ...
- 用正则表达式抓取网页中的ul 和 li标签中最终的值!
获取你要抓取的页面 const string URL = "http://www.hn3ddf.gov.cn/price/GetList.html?pageno=1& ...
- C# 中异常抛出捕获机制--throw / try,catch,finally
try { messagebox.show("true"); } catch { messagebox.show("false"); } finally { m ...
- java之try catch finally
try{ }catch(Exception e){ }finally{ } java异常处理在编程中很常见,将可能抛出异常的语句放在try{}中,若有异常抛出,则try{}中抛出异常语句之后的语句不再 ...
- UE4 Android打包 问题 记录笔记
问题一:error: expression result unused [-Werror,-Wunused-value] 虽然看了输出日志知道了这行沉余代码删掉就行,但是不是很懂这个地方报错意义. 问 ...
- 原来还有这样的记词方法_Java版记不规则动词_博主推荐
昨天在看一本英语书的不规则动词的时候,突然产生的灵感:就是想把这样记单词简单方式,用程序代码实现,然后,使用户可以与之进行交互 这样,在用户背不规则动词的时候就会轻松把它给记住.基于这一点,于是我就思 ...
- Jdbc 事务
package com.j1; import java.sql.Connection; import java.sql.SQLException; import com.mysql.jdbc.Prep ...
- Javaweb 第15天 web练习和分页技术
第15天 web练习和分页技术 复习day14内容: 学习新技术的思路? 分析功能的思路? 使用queryRunner操作数据库的步骤? ResultSetHandler接口常用实现类(三个重点)? ...
随机推荐
- 【启发式拆分】bzoj5200: [NWERC2017]Factor-Free Tree
和bzoj4059: [Cerc2012]Non-boring sequences非常相似 Description 一棵Factor-Free Tree是指一棵有根二叉树,每个点包含一个正整数权值,且 ...
- Linux中的常见命令
1. ls 查看当前目录下的所有文件夹 2. pwd 查看当前所在的文件夹 3. cd 目录名 切换文件夹 4. touch 文件名 创建文件 5. mkdir 目录名 创建文件夹 6 ...
- python入门:输出1-10以内除去7的所有数(简)
#!/usr/bin/env python # -*- coding:utf-8 -*- #输出1-10以内除去7的所有数(简) """ 给变量kaishi赋值1,whi ...
- destoon 列表页面增加手动选择排序方式
在mobile/include/mall.inc.php 行60 $order = $MOD['order']; 之前增加 排序方式判断 如果有order参数则$order接受参数,没有就用默认 ...
- Django小总结
初始Git git init 初始化本地仓库,会在根目录下创建一个.git文件夹 git log 查看提交日志 git status 查看日志 git add 文件名 添加到缓存区 git commi ...
- python 项目中包中__init__.py文件的作用
开发python项目时,我遇到了一个这样的现象,当我新建一个pythonpackage时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很不了解这个空文件的作用是什么, ...
- LeetCode(238) Product of Array Except Self
题目 Given an array of n integers where n > 1, nums, return an array output such that output[i] is ...
- Nordic Collegiate Programming Contest 2015 E. Entertainment Box
Ada, Bertrand and Charles often argue over which TV shows to watch, and to avoid some of their fight ...
- 利用http录制jmeter脚本
1.在WorkBench下新建HTTP(S) Test Script Recorder,默认端口号为8080,假如8080被占用,则使用其他端口号:且为了使录制保存到线程组里,也同时新建一个线程组Tr ...
- java模糊关键字查询
通过前台页面上传到后台的查询条件和关键字去数据库中进行查询,先在数据库中写好sql语句,数据库利用的是LIKE这个关键词进行查询的,然后就是dao层service层的调用,这条语句返回的是一个user ...