当前位置: 首页 > news >正文

P2163 [SHOI2007] 园丁的烦恼 做题笔记

二维数点。

写得有点shi。

关于我数组开小爆炸这一件事:

写代码写着写着晕了。

#include<bits/stdc++.h>
#define endl '\n'
using namespace std;
const int maxn=1.5e6+10,V=1e6+10;//懒得改了,直接开大
int a[maxn],tot,tx,ty,tot2,ans[maxn];
struct tr{//园丁的树int x,y,id;friend bool operator<(tr aa,tr bb){return aa.x<bb.x;}
}v[maxn];
struct qry{int a,b,c,d,id;
}b[maxn];
struct qry2{int x,y,type,id;friend bool operator<(qry2 aa,qry2 bb){return aa.x<bb.x;}
}q[maxn*4];
int bx[maxn],by[maxn];
int getx(int x){return lower_bound(bx+1,bx+tx+1,x)-bx;}
int gety(int y){return lower_bound(by+1,by+ty+1,y)-by;}
struct node{int l,r,sum;
}t[maxn*4];
#define ls id<<1
#define rs id<<1|1
void up(int id){t[id].sum=t[ls].sum+t[rs].sum;}
void build(int id,int l,int r){t[id].l=l,t[id].r=r;if(l==r){t[id].sum=0;//后面要逐个插入return;}int mid=(l+r)>>1;build(ls,l,mid);build(rs,mid+1,r);up(id);
}
void add(int id,int x){if(t[id].r<x||t[id].l>x)return;if(t[id].l==t[id].r&&t[id].l==x){t[id].sum++;return;}add(ls,x),add(rs,x);up(id);
}
int query(int id,int l,int r){if(t[id].r<l||t[id].l>r)return 0;if(l<=t[id].l&&t[id].r<=r)return t[id].sum;return query(ls,l,r)+query(rs,l,r);
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=n;i++){int x,y;cin>>x>>y;v[i]={x,y,i};bx[++tx]=x,by[++ty]=y;}for(int i=1;i<=m;i++){int A,B,C,D;cin>>A>>B>>C>>D;b[++tot]={A,B,C,D,i};bx[++tx]=A,bx[++tx]=C;by[++ty]=B,by[++ty]=D;}sort(bx+1,bx+tx+1);sort(by+1,by+ty+1);tx=unique(bx+1,bx+tx+1)-bx-1;ty=unique(by+1,by+ty+1)-by-1;for(int i=1;i<=n;i++)v[i]={getx(v[i].x),gety(v[i].y),v[i].id};for(int i=1;i<=m;i++)b[i]={getx(b[i].a),gety(b[i].b),getx(b[i].c),gety(b[i].d),b[i].id};build(1,1,V);int k=1;sort(v+1,v+n+1);for(int i=1;i<=n;i++)a[i]=v[i].y;for(int i=1;i<=m;i++){q[++tot2]={b[i].c,b[i].d,1,i};q[++tot2]={b[i].a-1,b[i].b-1,1,i};q[++tot2]={b[i].a-1,b[i].d,-1,i};q[++tot2]={b[i].c,b[i].b-1,-1,i};}sort(q+1,q+tot2+1);for(int i=1;i<=tot2;i++){while(v[k].x<=q[i].x&&k<=n)add(1,a[k++]);ans[q[i].id]+=q[i].type*query(1,1,q[i].y);
//		cout<<q[i].type*query(1,1,q[i].r)<<endl;}for(int i=1;i<=m;i++)cout<<ans[i]<<endl;return 0;
}
http://www.zskr.cn/news/76170.html

相关文章:

  • 20232424 2025-2026-1 《网络与系统攻防技术》实验八实验报告
  • 北京上门收酒机构调研排行:四家靠谱机构推荐,藏家变现别踩坑
  • 酵母双杂交(膜系统)服务:解锁膜蛋白互作密码,赋能药物研发与机制研究
  • 洛谷U639316 最长子串询问 题解 字符串哈希+二分
  • 2025最新成都精装房装修公司TOP5评测!一站式服务+品质保障,成都十区装修服务商权威榜单发布,重塑居家生活新体验
  • 吟诗一首
  • re:MARS 2022:聚焦机器学习与机器人技术的年度盛会
  • 测试用例的编写和注意事项
  • 割点和桥
  • AI元人文构想全维解构:从意义行为原生到文明价值操作系统
  • 深度解析人工神经元输入机制
  • P7115 [NOIP2020] 移球游戏 题解
  • 2025年12月本田雅阁更换轮胎推荐:最新性能测评与选购攻略
  • 获取运行中的exe的窗口标题名
  • 12.7
  • 图像基础核心知识体系
  • 渗透测试实验一报告
  • [论文笔记] Interleaving Static Analysis and LLM Prompting
  • 必考
  • 实用指南:多种时间序列预测算法的MATLAB实现
  • KEIL5软件查看函数最大调用深度12.7
  • DeepSeek-OCR 模型的下载
  • 2025散热风扇厂家实力排行榜:万航电子以智能温控技术领跑,六家高潜力本土品牌深度解析
  • AI 清洁管理系统:响应 3 秒,人力成本降低 42%
  • virtualbox+ubuntu+vscode+ssh pwn环境配置
  • 2025砂面粉厂家实力榜:思洛尔新材料以纳米级球形蜡粉领跑,六家高潜力国产技术代表企业深度解析
  • 2025防水织带厂家实力榜:东莞市永沣织带以创新飞织技术领跑,六大高潜力本土品牌核心优势深度解析
  • 《密码系统设计》第十二周预习报告
  • 2025广东懒人全自动酿酒设备实力榜:六家本土技术代表企业,以智能蒸汽与不锈钢工艺领跑行业深度解析
  • FortiGuard 应用控制服务更新:新版本特性与签名变动