裸的二维数点

#include"cstdio"
#include"cstring"
#include"iostream"
#include"algorithm"
using namespace std;const int MAXN=5e5+5;int n,m,maxn;
int Tib[MAXN*3];
struct rpg{int kd,x,y,id;int rey,val;
}pnt[MAXN*5];bool cmp1(rpg a,rpg b){return a.y<b.y;}
bool cmp2(rpg a,rpg b)
{if(a.x!=b.x) return a.x<b.x;if(a.y!=b.y) return a.y<b.y;return a.kd<b.kd;
}inline int read()
{int x=0;char ch=getchar();while(ch<'0'||'9'<ch) ch=getchar();while('0'<=ch&&ch<='9') x=x*10+(ch^48),ch=getchar();return x;
}void init()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;++i){int x=read(),y=read();pnt[i]=(rpg){1,x,y,m+n};}for(int i=1;i<=m;++i){int a=read(),b=read(),c=read(),d=read();pnt[n+i]=(rpg){2,a-1,b-1,i};pnt[n+m+i]=(rpg){3,a-1,d,i};pnt[n+(m<<1)+i]=(rpg){4,c,b-1,i};pnt[n+(m*3)+i]=(rpg){5,c,d,i};}sort(pnt+1,pnt+n+(m<<2)+1,cmp1);pnt[1].rey=1;for(int i=2;i<=n+(m<<2);++i) pnt[i].rey=pnt[i].y==pnt[i-1].y?pnt[i-1].rey:pnt[i-1].rey+1;maxn=pnt[n+(m<<2)].rey;sort(pnt+1,pnt+n+(m<<2)+1,cmp2);return;
}void ins(int x)
{for(int i=x;i<=maxn;i+=i&-i) ++Tib[i];return;
}int query(int x)
{int sum=0;for(int i=x;i;i&=i-1) sum+=Tib[i];return sum;
}bool cmp3(rpg a,rpg b){return a.id==b.id?a.kd<b.kd:a.id<b.id;}void solve()
{for(int i=1;i<=n+(m<<2);++i){if(pnt[i].kd==1) ins(pnt[i].rey);else pnt[i].val=query(pnt[i].rey);}sort(pnt+1,pnt+n+(m<<2)+1,cmp3);for(int i=1;i<=(m<<2);i+=4){printf("%d\n",pnt[i].val-pnt[i+1].val-pnt[i+2].val+pnt[i+3].val);}return;
}int main()
{init();solve();return 0;
}

转载于:https://www.cnblogs.com/AH2002/p/10063499.html

[SHOI2007]园丁的烦恼相关推荐

  1. 洛谷 - P2163 [SHOI2007]园丁的烦恼(不带修二维数点-树状数组/主席树)

    题目链接:点击查看 题目大意:二维平面坐标系中给出 nnn 个坐标点,然后是 mmm 次询问,每次询问需要回答一个闭合矩阵中有多少个点 题目分析:想挂树套树来着,但是复杂度有点大.本题不带修且可以离线 ...

  2. 洛谷 P2163 [SHOI2007]园丁的烦恼 (离线sort,树状数组,解决三维偏序问题)

    P2163 [SHOI2007]园丁的烦恼 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草. 有一天国王漫步在花园 ...

  3. P2163 [SHOI2007]园丁的烦恼(二维数点模板题)

    P2163 [SHOI2007]园丁的烦恼 题意: 在一个二维平面内有一些点,给你一个左上角和右下角的点,问这个范围内有多少点 题解: 二维数点模板题 我们设F(a,b)表示以(0,0)为左下角,(a ...

  4. P2163 [SHOI2007]园丁的烦恼 (CDQ 分治)

    P2163 [SHOI2007]园丁的烦恼 注意x = 0 和 y = 0; 题目背景 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各 ...

  5. bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼

    http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...

  6. 洛谷 P2163 [SHOI2007]Tree 园丁的烦恼

    此题树状数组卡常好题(滑稽) 题目描述 很久很久以前,在遥远的大陆上有一个美丽的国家.统治着这个美丽国家的国王是一个园艺爱好者,在他的皇家花园里种植着各种奇花异草.有一天国王漫步在花园里,若有所思,他 ...

  7. bzoj1935: [Shoi2007]Tree 园丁的烦恼

    这题本来是想用二维树状数组水的.然后不会动态开数组,所以顺便补了一发cdq. 第一维时间,第二维x,第三维y,(其实我自己的感觉是第一维可以不要的),xy很大so离散化谢谢. 询问拆成4个.大家都懂. ...

  8. bzoj1935 [Shoi2007]Tree 园丁的烦恼 二维偏序

    其实这个题就是一个二维偏序,注意不要往树套树上想了 用容斥求出4个点的偏虚前缀和 保证y<要求点 ,就按y排序,分别处理每个询问点 保证x>要求点,就树状数组求前缀和 码: #includ ...

  9. BZOJ1935 园丁的烦恼

    一个二维偏序的问题,学过了三维偏序cdq分治之后觉得这个题非常的水.只需按一维排序之后再用树状数组操作即可.--by VANE #include<bits/stdc++.h> using ...

最新文章

  1. 多线程的使用——模拟线程池的实现(2015-12-02 00:14:59)
  2. html input submit 执行,HtmlInputSubmit 服务器控件声明性语法
  3. getelementbyid获取不到js加载的元素_Selenium元素定位不到?JS注入轻松搞定!
  4. 基于Apache POI 向xlsx写入数据
  5. mysql查询含有某个值的表_MYSQL查询数据表中某个字段包含某个数值
  6. pubmed影响因子插件_新版新版PubMed使用技巧2
  7. 今日恐慌与贪婪指数为91 贪婪程度有所缓解
  8. C++ override什么意思
  9. 浏览器的about:config清缓存及其他参数大全及其具体用途介绍
  10. 缺失magisk正常工作所需的文件_magisk常见错误日志代码 面具模块报错解决措施...
  11. unity3d Md5打包与版本更新
  12. 一文了解caffe框架
  13. ]计算机专业就业方向 .
  14. 安装和使用Windows XP系统故障恢复控制台
  15. 【老生谈算法】matlab实现细菌觅食算法(BFA)源码——粒子群算法
  16. ASP.NET Web API实现简单的文件下载与上传
  17. 【深度学习】使用tensorflow实现VGG19网络
  18. 哈工大 2021春 计算机系统 大作业程序人生
  19. L39.linux命令每日一练 -- 第六章 文件备份与压缩命令 -- scp和rsync
  20. 自动驾驶仿真(六)—— SIL软件在环仿真测试

热门文章

  1. grep -v、-e、-E
  2. EXCEL中SUMIF函数介绍
  3. Linux-系统时钟
  4. 爱情第七课,被爱的秘密
  5. .NET : VS 2008中的一个转换器
  6. redis, memcached, mongo性能比较
  7. thinkphp5.0生命周期
  8. Android利用RecyclerView实现列表倒计时
  9. Linux网络设置2——虚拟机中的Linux和Windows网络互通设置
  10. Spark 把RDD数据保存到hdfs单个文件中,而不是目录