以统计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. 对于caffe程序中出现的Unknown database backend问题的报错怎么办?

    在预处理器中添加USE_LMDB,因为caffe需要一种数据输入格式 这样,在db.cpp中#ifdef USE_LMDB就会变亮,显示使用的数据格式为LMDB

  2. HPE ProLiant 系列服务器Microsoft Windows 2008 R2系统下网卡绑定方法

    HPE Network Configuration Utility(以下简称NCU) 网卡绑定工具,用户可以通过该工具很方便的把服务器的多个网卡捆绑到一起以达到容错和增加可用带宽的目的. 1.打开NC ...

  3. 2020.12.3--vj个人赛补题

    A Vasya studies music.He has learned lots of interesting stuff. For example, he knows that there are ...

  4. Codeforces Round #747 (Div. 2) Editorial

    Codeforces Round #747 (Div. 2) A. Consecutive Sum Riddle 思路分析: 一开始想起了那个公式\(l + (l + 1) + - + (r − 1) ...

  5. Coursera Deep Learning笔记 结构化机器学习项目 (下)

    参考:https://blog.csdn.net/red_stone1/article/details/78600255https://blog.csdn.net/red_stone1/article ...

  6. Sequence Model-week2编程题2-Emoji表情生成器

    1. Emoji表情生成器 下面,我们要使用词向量(word vector)来构建一个表情生成器. 你将实现一个模型:输入一句话 (如 "Let's go see the baseball ...

  7. cunda 常用命令,删除,创建,换源

    https://github.com/tensorflow/tensorflow/ conda create --name [虚拟环境名] python=3.7 创建一个环境 conda activa ...

  8. skywalking实现分布式系统链路追踪

    一.背景 随着微服务的越来越流行,我们服务之间的调用关系就显得越来越复杂,我们急需一个APM工具来分析系统中存在的各种性能指标问题以及调用关系.目前主流的APM工具有CAT.Zipkin.Pinpoi ...

  9. 计算机网络之IPv4(IPv4分组、IPv4地址、NAT、子网划分与子网掩码、CIDR、ARP协议、DHCP、ICMP)

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105138313 学习课程:<2019王道考研计算机网络> 学习目的 ...

  10. MyBatis源码分析(四):SQL执行过程分析

    一.获取Mapper接口的代理 根据上一节,Mybatis初始化之后,利用sqlSession(defaultSqlSession)的getMapper方法获取Mapper接口 1 @Override ...