以统计x坐标的数量为例:x为下标建一棵线段树,然后对每一个区间按照y坐标建一棵可持久化线段树(每一个x只保留最大的一个y),询问时,二分找到这个区间内最大的y以前的点并统计,复杂度为$o(nlog^{2}n)$
还有一种做法是bitset+分块,预处理出:1.第i个块到第j个块的bitdet;2.每一个块的前缀的bitset;3.每一个块的后缀的bitset,根据这个就可以快速求出对应区间的bitset,然后通过左移和右移去除区间外的点,求和即可,时间复杂度$o(n^{2}/32+n\sqrt{n})$

 1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 50005
4 #define y1 y11
5 #define T(p) p,1,1,m[p]
6 #define L (k<<1)
7 #define R (L+1)
8 #define mid (l+r>>1)
9 struct ji{
10 int x,y;
11 bool operator < (const ji &k)const{
12 return y<k.y;
13 }
14 }a[N];
15 struct tr{
16 int k,ls,rs;
17 }f[N*1000];
18 vector<int>rt[2][N<<2];
19 vector<ji>v[2][N<<2];
20 int V,m[2],n,q,p,x1,y1,x2,y2,ans1,ans2,lst[N],X[N],Y[N];
21 bool cmp(ji x,ji y){
22 return x.x<y.x;
23 }
24 void update(int &k,int l,int r,int x,int y){
25 f[++V]=f[k];
26 k=V;
27 f[k].k+=y;
28 if (l==r)return;
29 if (x<=mid)update(f[k].ls,l,mid,x,y);
30 else update(f[k].rs,mid+1,r,x,y);
31 }
32 int query(int k,int l,int r,int x,int y){
33 if ((!k)||(l>y)||(x>r))return 0;
34 if ((x<=l)&&(r<=y))return f[k].k;
35 return query(f[k].ls,l,mid,x,y)+query(f[k].rs,mid+1,r,x,y);
36 }
37 void push(int p,int k,int l,int r,int x,int y){
38 v[p][k].push_back(ji{x,y});
39 if (l==r)return;
40 if (x<=mid)push(p,L,l,mid,x,y);
41 else push(p,R,mid+1,r,x,y);
42 }
43 void build(int p,int k,int l,int r){
44 if (l<r){
45 build(p,L,l,mid);
46 build(p,R,mid+1,r);
47 }
48 sort(v[p][k].begin(),v[p][k].end());
49 int las=0,root=0;
50 for(int i=0;i<v[p][k].size();i++){
51 update(root,1,m[p^1],v[p][k][i].y,1);
52 if (lst[v[p][k][i].x])update(root,1,m[p^1],lst[v[p][k][i].x],-1);
53 lst[v[p][k][i].x]=v[p][k][i].y;
54 if ((i+1==v[p][k].size())||(v[p][k][i+1].y!=v[p][k][las].y)){
55 while (las++<=i)rt[p][k].push_back(root);
56 las--;
57 }
58 }
59 for(int i=0;i<v[p][k].size();i++)lst[v[p][k][i].x]=0;
60 }
61 int query(int p,int k,int l,int r,int x1,int x2,int y1,int y2){
62 if ((x1>r)||(l>x2))return 0;
63 if ((x1<=l)&&(r<=x2)){
64 int x=lower_bound(v[p][k].begin(),v[p][k].end(),ji{0,y2+1})-v[p][k].begin()-1;
65 if (x==-1)return 0;
66 return query(rt[p][k][x],1,m[p^1],y1,y2);
67 }
68 return query(p,L,l,mid,x1,x2,y1,y2)+query(p,R,mid+1,r,x1,x2,y1,y2);
69 }
70 int main(){
71 scanf("%d",&n);
72 for(int i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].y);
73 sort(a+1,a+n+1,cmp);
74 for(int i=1;i<=n;i++)X[i]=a[i].x;
75 sort(a+1,a+n+1);
76 for(int i=1;i<=n;i++)Y[i]=a[i].y;
77 m[0]=unique(X+1,X+n+1)-X-1;
78 m[1]=unique(Y+1,Y+n+1)-Y-1;
79 for(int i=1;i<=n;i++){
80 a[i].x=lower_bound(X+1,X+m[0]+1,a[i].x)-X;
81 a[i].y=lower_bound(Y+1,Y+m[1]+1,a[i].y)-Y;
82 }
83 for(int i=1;i<=n;i++)
84 scanf("%d%d",&q,&p);
85 for(int i=1;i<=q;i++){
86 scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
87 x1=lower_bound(X+1,X+m[0]+1,x1^(p*ans1))-X;
88 y1=lower_bound(Y+1,Y+m[1]+1,y1^(p*ans2))-Y;
89 x2=upper_bound(X+1,X+m[0]+1,x2^(p*ans1))-X-1;
90 y2=upper_bound(Y+1,Y+m[1]+1,y2^(p*ans2))-Y-1;
91 }
92 }

[noi1773]function的更多相关文章

  1. 通过百度echarts实现数据图表展示功能

    现在我们在工作中,在开发中都会或多或少的用到图表统计数据显示给用户.通过图表可以很直观的,直接的将数据呈现出来.这里我就介绍说一下利用百度开源的echarts图表技术实现的具体功能. 1.对于不太理解 ...

  2. jsp中出现onclick函数提示Cannot return from outside a function or method

    在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...

  3. JavaScript function函数种类

    本篇主要介绍普通函数.匿名函数.闭包函数 目录 1. 普通函数:介绍普通函数的特性:同名覆盖.arguments对象.默认返回值等. 2. 匿名函数:介绍匿名函数的特性:变量匿名函数.无名称匿名函数. ...

  4. 在ubuntu16.10 PHP测试连接MySQL中出现Call to undefined function: mysql_connect()

    1.问题: 测试php7.0 链接mysql数据库的时候发生错误: Fatal error: Uncaught Error: Call to undefined function mysqli_con ...

  5. jquery中的$(document).ready(function() {});

    当文档载入时执行function函数里的代码, 这部分代码主要声明,页面加载后 "监听事件" 的方法.例如: $(document).ready( $("a") ...

  6. Function.prototype.toString 的使用技巧

    Function.prototype.toString这个原型方法可以帮助你获得函数的源代码, 比如: function hello ( msg ){ console.log("hello& ...

  7. 转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38

    转:ORA-15186: ASMLIB error function = [asm_open], error = [1], 2009-05-24 13:57:38http://space.itpub. ...

  8. [Xamarin] 透過Native Code呼叫 JavaScript function (转帖)

    今天我們來聊聊關於如何使用WebView 中的Javascript 來呼叫 Native Code 的部分 首先,你得先來看看這篇[Xamarin] 使用Webview 來做APP因為這篇文章至少講解 ...

  9. Oracle数据库自动备份SQL文本:Procedure存储过程,View视图,Function函数,Trigger触发器,Sequence序列号等

    功能:备份存储过程,视图,函数触发器,Sequence序列号等准备工作:--1.创建文件夹 :'E:/OracleBackUp/ProcBack';--文本存放的路径--2.执行:create or ...

随机推荐

  1. python自定义翻页配置

    1.创建pager.py文件,针对翻页进行函数书写 class PageInfo(object): # current_page 当前页数 # all_count 所有行 # per_page 每页的 ...

  2. PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力

    ​ 飞桨 (PaddlePaddle) 以百度多年的深度学习技术研究和业务应用为基础,是中国首个自主研发.功能完备. 开源开放的产业级深度学习平台,集深度学习核心训练和推理框架.基础模型库.端到端开发 ...

  3. visualbox安装ubuntu18过程中不能输入name,password,密码,姓名问题的解决办法+一些基本操作

    ​ 问题描述:visualbox安装ubuntu18,,,,卡在注册处,无法输入姓名,密码-点击无法输入............如下图: ​ 解决办法:更改你的Ubuntu的主板内存,主板内存默认的值 ...

  4. C 函数指针 函数指针数组 转移表

    内容来自<c和指针>,整理后方便个人理解 高级声明 cdel程序可以方便的给出声明的释义 指向函数的指针 int ( *f ) ( int n_values, float amount ) ...

  5. vue3 element-plus 配置json快速生成form表单组件,提升生产力近600%(已在公司使用,持续优化中)

    ️本文为博客园社区首发文章,未获授权禁止转载 大家好,我是aehyok,一个住在深圳城市的佛系码农‍♀️,如果你喜欢我的文章,可以通过点赞帮我聚集灵力️. 个人github仓库地址: https:gi ...

  6. 【c++ Prime 学习笔记】第7章 类

    类的基本思想是数据抽象和封装 数据分离抽象是一种依赖于接口和实现分离的编程/设计技术.接口包括用户能执行的操作,实现包括类的数据成员.接口实现的函数体.定义类所需的各种私有函数 封装实现了类的接口和实 ...

  7. JDBC:(java database Connection) java数据库连接。

    JDBC 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库. JDBC连接步骤: 1.先导入jar包,把jar放入到工程下并 ...

  8. JAVA复习总体大纲

    1 java基础. [1].变量--- 数据类型 变量名=值; 数据类型: 1.基本数据类型. byte[1字节] short[2字节] int[4字节] long[8字节] float[4字节] d ...

  9. String直接赋字符串和new String的区别

    String A="ABC"; String B=new String("ABC"); String A = "ABC";内存会去查找常量池 ...

  10. 移动端 h5 uniapp 读,写,删本地文件或sd文件

    移动端 h5 uniapp 读,写,删本地文件或sd文件 应用场景: 当我们需要做离线应用或者是加载本地文件时使用到此方法.(本篇文章给大家分享访问app私有文件目录,系统公共目录,sd外置存储的文件 ...