以统计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. Django基础1

    一,web框架的本质 web应用的本质就是一个socket的服务端.而用户的浏览器就是一个客户端,具体事例如下: import socket sk = socket.socket() sk.bind( ...

  2. 题解 「SCOI2016」萌萌哒

    link Description 一个长度为 $ n $ 的大数,用 $ S_1S_2S_3 \ldots S_n $表示,其中 $ S_i $ 表示数的第 $ i $ 位,$ S_1 $ 是数的最高 ...

  3. HttpServletResponse 入门

    继承体系 功能: 设置响应消息 1. 设置响应行 格式:HTTP/1.1 200 ok 设置状态码:setStatus(int sc) 2. 设置响应头:setHeader(String name, ...

  4. 路由器的不同接口对WANsim的影响

    随着网络的快速发展,移动设备已经成为我们日常生活中不可或缺的一部分.人们习惯用手机看新闻.看视频.点外卖.打车.购物等等. 同时,广域网也为移动通讯带来了挑战.以视频流来举例,从用户终端到达服务器,这 ...

  5. 【UE4 C++】 射线检测 LineTrace 及 BoxTrace、SphereTrace、CapsuleTrace API

    World.h 库里的 Trace API Trace模式 TraceSingle 单个结果 TraceMulti 多个结果 Trace 的检测依据 ByChanne ByObjectType ByP ...

  6. 【c++ Prime 学习笔记】第16章 模板与泛型编程

    面向对象编程(OOP)和泛型编程(GP)都能处理在编写程序时类型未知的情况 OOP能处理运行时获取类型的情况 GP能处理编译期可获取类型的情况 标准库的容器.迭代器.算法都是泛型编程 编写泛型程序时独 ...

  7. 离线状态迁移Anaconda虚拟环境

    离线状态迁移Anaconda虚拟环境 同样是项目需求,需要布署的服务器上的Anaconda安装到了普通账户下 而后续所有的内容都需要通过root账户进行操作,而服务器已经布署,联网比较麻烦 本文提出, ...

  8. Beta阶段第七次会议

    Beta阶段第七次会议 时间:2020.5.23 完成工作 姓名 工作 难度 完成度 ltx 1.修改小程序页面无法加载bug2.修改条件语句,使得页面能够正常显示 中 90% xyq 1.根据api ...

  9. 软工博客之关于CSDN的移动端软件测评

    关于CSDN的移动端软件测评 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 软件测评作业 我在这个课程的目标 不求变强,只求做好,成为一颗有用的 ...

  10. Noip模拟81 2021.10.20

    T1 语言 比较简单的题,然后就瞎写了,所以考场上就我一个写了线段树的,所以我的常数.... 所以就枚举动词的位置,找前面后面有没有出现$4$即可 1 #include<bits/stdc++. ...