以统计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. bzoj3073Journeys(线段树优化最短路)

    这里还是一道涉及到区间连边的问题. 如果暴力去做,那么就会爆炸 那么这时候就需要线段树来优化了. 因为是双向边 所以需要两颗线段树来分别对应入边和出边 QwQ然后做就好了咯 不过需要注意的是,这个边数 ...

  2. mall笔记

    介绍 SpringBoot.SpringCloud.SpringCloudAlibaba.Nacos.Sentinel.Seata整合demo. 软件架构 JDK 1.8 Spring Boot 2. ...

  3. js--Symbol 符号基本数据类型

    前言 ECMAScript 6 中新增了 Symbol 符号这一基本数据类型,那么Symbol 是用来干什么的,对开发又有什么帮助呢?本文来总结记录一下 Symbol 的相关知识点. 正文 Symbo ...

  4. kivy画板

    from kivy.app import App from kivy.graphics import Line, Color # 引入绘图线条,颜色 from kivy.uix.widget impo ...

  5. Java基础之原生JDBC操作数据库

    前言 日常开发中,我们都习惯了使用ORM框架来帮我们操作数据库,本文复习.记录Java如何使用原生JDBC操作数据库 代码编写 封装几个简单方法 find查询方法 findOne查询方法 update ...

  6. geos编译问题

    gdal编译geos的时候会用到geos_c_i.lib这个文件,我用cmake编译的时候仅仅产生geos_c.lib这个文件,所以只能使用nmake的编译方式来编译geos库,nmake编译geos ...

  7. 单片机STM32开发中常用库函数分析

    1.GPIO初始化函数 用法: voidGPIO_Configuration(void) { GPIO_InitTypeDefGPIO_InitStructure;//GPIO状态恢复默认参数 GPI ...

  8. 21.10.18 test

    可可大神出题,四款有趣的游戏推荐,第四个好玩/se T1 loopers \(\color{green}{100}\) 考虑钦定 \(a_1,a_i\) 的位置,固定左边一坨,那么剩下的一坨的 \(\ ...

  9. Java:final,finally 和 finalize 的区别

    在Java中,final,final和finalize之间有许多差异.final,final和finalize之间的差异列表如下: No final finally finalize 1 final用 ...

  10. jdk8下载与安装教程

     jdk8下载与安装教程下载有两种方式 一.网盘下载网盘下载链接 pan.baidu.com/s/1VQAwHS6WDjemDnKDnPIvww 提取码:f5tv二.官网下载如果想自己一步步研究亲自实 ...