【题目】

洛谷传送门

题目描述:

输入格式:

输出格式:

样例数据:

输入
2 3
1 1
2 3
2 1 2
1 3 3
2 4 2

输出
1
2

备注:

【分析】

我们把四个象限分开来考虑。

对于一个点 (x,y)(x,y)(x,y),也就是求 min(∣x′−x∣+∣y′−y∣)min(∣x'−x∣+∣y'−y∣)min(∣x′−x∣+∣y′−y∣)。

假设 (x′,y′)(x',y')(x′,y′) 在 (x,y)(x,y)(x,y) 的左下角。

那我们要求的就是 min(x−x′+y−y′)=min(x+y−(x′+y′))min(x−x'+y−y')=min(x+y−(x'+y'))min(x−x′+y−y′)=min(x+y−(x′+y′))。

相当于求最大的 x′+y′x'+y'x′+y′,这个可以用 CDQ\mathrm{CDQ}CDQ 分治搞定。

对于 (x′,y′)(x',y')(x′,y′) 在 (x,y)(x,y)(x,y) 的其它位置的情况,直接翻转象限就行。

然后就可以 A\mathrm AA 掉这道题啦。

【代码】

#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 1000005
#define lowbit(x) (x&-x)
using namespace std;
int n,m,Max,cnt,bit[N],ans[N];
struct node{int x,y,op,id,pos;}a[N],A[N];
bool comp(const node &p,const node &q)  {return p.x<q.x;}
void modify(int i,int x)  {for(;i<=Max;i+=lowbit(i))bit[i]=max(bit[i],x);}
int query(int i,int ans=0)  {for(;i;i-=lowbit(i))ans=max(ans,bit[i]);return ans;}
void Clear(int i)  {for(;i<=Max;i+=lowbit(i))bit[i]=0;}
void solve(int l,int r)
{if(l==r)  return;int mid=(l+r)>>1;int i,j,s=l,t=mid+1;for(i=l;i<=r;++i){if(a[i].id<=mid)  A[s++]=a[i];else  A[t++]=a[i];}for(i=l;i<=r;++i)  a[i]=A[i];i=l;for(j=mid+1;j<=r;++j){if(a[j].op!=2)  continue;for(;i<=mid&&a[i].x<=a[j].x;++i)if(a[i].op==1)  modify(a[i].y,a[i].x+a[i].y);int now=query(a[j].y);if(now)  ans[a[j].pos]=min(ans[a[j].pos],a[j].x+a[j].y-now);}for(j=l;j<i;++j)  if(a[j].op==1)  Clear(a[j].y);solve(l,mid),solve(mid+1,r);
}
int main()
{int i;scanf("%d%d",&n,&m);memset(ans,127,sizeof(ans));for(i=1;i<=n;++i){a[i].id=i,a[i].op=1;scanf("%d%d",&a[i].x,&a[i].y);a[i].x++,a[i].y++;Max=max(Max,max(a[i].x,a[i].y));}for(i=1;i<=m;++i){a[n+i].id=n+i;scanf("%d%d%d",&a[n+i].op,&a[n+i].x,&a[n+i].y);a[n+i].x++,a[n+i].y++;if(a[n+i].op==2)  a[n+i].pos=++cnt;Max=max(Max,max(a[n+i].x,a[n+i].y));}Max++;sort(a+1,a+n+m+1,comp),solve(1,n+m);for(i=1;i<=n+m;++i)  a[i].x=-a[i].x+Max;sort(a+1,a+n+m+1,comp),solve(1,n+m);for(i=1;i<=n+m;++i)  a[i].y=-a[i].y+Max;sort(a+1,a+n+m+1,comp),solve(1,n+m);for(i=1;i<=n+m;++i)  a[i].x=-a[i].x+Max;sort(a+1,a+n+m+1,comp),solve(1,n+m);for(i=1;i<=cnt;++i)  printf("%d\n",ans[i]);return 0;
}

【BZOJ 2716】天使玩偶相关推荐

  1. BZOJ 2716: [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 1473  Solved: 621 [Submit][Sta ...

  2. bzoj 2648: SJY摆棋子2716: [Violet 3]天使玩偶 --kdtree

    2648: SJY摆棋子&&2716: [Violet 3]天使玩偶 Time Limit: 20 Sec  Memory Limit: 128 MB Description 这天,S ...

  3. BZOJ 2716 Violet 3 天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 2145  Solved: 928 [Submit][Sta ...

  4. 【BZOJ 2716/2648】 [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 kd-tree模板题. ①首先依次按照每一维(即先按照 x x,再按照yy,再按照 x x-多维同理)将点存在一棵二叉树中: 先求出以当前维数为关键字的中间点 ...

  5. BZOJ 2716/CH 4701 天使玩偶

    [题意] Ayu在七年前曾经收到过一个天使玩偶,当时她把它当做时间囊埋在了地下. 而七年后的今天,Ayu却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把Ayu生活的小镇看做 ...

  6. BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶

    BZOJ2648: SJY摆棋子 BZOJ2716: [Violet 3]天使玩偶 BZOJ氪金无极限... 其实这两道是同一题. 附上2648的题面: Description 这天,SJY显得无聊. ...

  7. [KDTree] [BZOJ2716] [Violet 3] 天使玩偶

    题目描述 Description Ayu在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后的今天,Ayu却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们 ...

  8. bzoj2716 [Violet 3]天使玩偶

    2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MB Submit: 2160  Solved: 936 [Submit][Sta ...

  9. 天使玩偶/SJY摆棋子

    P4169 [Violet]天使玩偶/SJY摆棋子 CDQ分治的题目. 我们发现题目要我们求的\(|A_x-B_x|+|A_y-B_y|\)的绝对值号比较恶心. 试想一下怎么去掉 如果所有的点都在我们 ...

  10. P4169 [Violet]天使玩偶/SJY摆棋子 [CDQ分治]

    天使玩偶天使玩偶天使玩偶 Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把 ...

最新文章

  1. php和python区别-编程语言之PHP与Python之间的差异
  2. 关于AttributeError: type object ‘XXX‘ has no attribute ‘XXX‘的问题
  3. 多线程并发如何高效实现生产者/消费者?
  4. 如何在Jackson中使用PropertyNamingStrategy
  5. mac mysql创建本地数据库_【mac】配置本地数据库
  6. java垃圾回收 分代_Java分代垃圾回收策略原理详解
  7. lua判断字符不为空或空格_Lua判断字符串前缀是否为指定字符的3种方法
  8. 在容器内源码安装PostgreSQL13.2
  9. [bzoj3585] Rmq Problem / mex
  10. JavaScript—计算图片加载的张数。
  11. CTU Open Contest 2019 G. Beer Mugs 异或维护奇偶性
  12. 为什么博士后的年薪远远高于刚入职的大学老师?
  13. Hinton论文系列-Reducing the dimensionality of data with neural networks
  14. 大数据与传统数据对比
  15. python3爬虫实战姚良_Python3.X 爬虫实战(缓存与持久化)
  16. Java基础知识总结1(数据类型)
  17. jxTMS--web界面定义
  18. jsp 的 4 种作用域?
  19. 通过百度地图模糊查询获取详细地址?正则匹配
  20. 学生成绩管理系统数据库设计--MySQLSQL Server

热门文章

  1. java Label
  2. MIT教授:AI颠覆商业的唯一阻碍是你不会用它
  3. [渝粤教育] 中国地质大学 马克思主义基本原理 复习题 (2)
  4. vscode保存或者格式化文档时自动转为符合eslint的格式配置
  5. python写词法分析器_用python写一个简单的词法分析器
  6. 闵帆教授《论文写作》——心得体会
  7. 终于知道韩熙美白祛斑霜
  8. python面向对象编程开胃菜
  9. 基于遗传算法改进BP神经网络的电池容量SOC预测
  10. 3D Morphable Model Method