以统计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. PHP审计之POP链挖掘

    PHP审计之POP链挖掘 前言 续上文中的php反序列化,继续来看,这个POP的挖掘思路.在其中一直构思基于AST去自动化挖掘POP链,迫于开发能力有限.没有进展,随后找到了一个别的师傅已经实现好的项 ...

  2. Dapr + .NET Core实战(十三)跨语言开发

    因为基于Dapr的服务架构是不限语言的,我们来看看Dapr的跨语言开发.我们使用golang,python,.NET来实现跨语言的服务调用,拓扑如下 我们继续使用.NET 5的fontend和back ...

  3. Serverless:这真的是未来吗?(二)

    原文 | https://www.pulumi.com/blog/is_serverless_the_future_part_2/ 作者 | Lee Briggs & Piers Karsen ...

  4. 图解java 多线程模式 读书笔记

    第1章"Single Threaded Execution模式--能通过这座桥的只有一个人" 该模式可以确保执行处理的线程只能是一个,这样就可以有效防止实例不一致. 第⒉章&quo ...

  5. 哈工大知识图谱(Knowledge Graph)课程概述

    一.什么是知识图谱 知识(Knowledge)可以理解为 精炼的数据,知识图谱(Knowledge Graph)即是对知识的图形化表示,本质上是一种大规模语义网络 (semantic network) ...

  6. Vue3学习(七)之 列表界面数据展示

    一.前言 昨晚可能是因为更新完文章后,导致过于兴奋睡不着(写代码确实太容易让人兴奋了),结果两点多才睡着,大东北果然还是太冷了. 不知道是不是因为膝盖和脚都是冰凉的,所以才导致很晚才能入睡? 刚眯了一 ...

  7. Java序列初始化

    1.数组 Java数组可以用元素集合初始化: char[] c=new char[]{'.','.','.','.'}; 而想要用指定数量的相同元素来初始化数组,可以使用Arrays.fill()方法 ...

  8. Go 语言实现 gRPC 的发布订阅模式,REST 接口和超时控制

    原文链接: 测试小姐姐问我 gRPC 怎么用,我直接把这篇文章甩给了她 上篇文章 gRPC,爆赞 直接爆了,内容主要包括:简单的 gRPC 服务,流处理模式,验证器,Token 认证和证书认证. 在多 ...

  9. Vue3+Typescript+Node.js实现微信端公众号H5支付(JSAPI v3)教程--各种填坑

    ----微信支付文档,不得不说,挺乱!(吐槽截止) 功能背景 微信公众号中,点击菜单或者扫码,打开公众号中的H5页面,进行支付. 一.技术栈 前端:Vue:3.0.0,typescript:3.9.3 ...

  10. 架构师之路-https底层原理

    引子 先说说我对架构师的理解.从业务能力上,需要的是发现问题和解决问题的能力:从团队建设上,需要的是能培养团队的业务能力:从项目管理上,把控好整个项目和软件产品的全生命周期. 我搜索了一下架构师的培训 ...