【BZOJ 2716】天使玩偶
【题目】
洛谷传送门
题目描述:
输入格式:
输出格式:
样例数据:
输入
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】天使玩偶相关推荐
- BZOJ 2716: [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 1473 Solved: 621 [Submit][Sta ...
- bzoj 2648: SJY摆棋子2716: [Violet 3]天使玩偶 --kdtree
2648: SJY摆棋子&&2716: [Violet 3]天使玩偶 Time Limit: 20 Sec Memory Limit: 128 MB Description 这天,S ...
- BZOJ 2716 Violet 3 天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 2145 Solved: 928 [Submit][Sta ...
- 【BZOJ 2716/2648】 [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 kd-tree模板题. ①首先依次按照每一维(即先按照 x x,再按照yy,再按照 x x-多维同理)将点存在一棵二叉树中: 先求出以当前维数为关键字的中间点 ...
- BZOJ 2716/CH 4701 天使玩偶
[题意] Ayu在七年前曾经收到过一个天使玩偶,当时她把它当做时间囊埋在了地下. 而七年后的今天,Ayu却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把Ayu生活的小镇看做 ...
- BZOJ2648: SJY摆棋子2716: [Violet 3]天使玩偶
BZOJ2648: SJY摆棋子 BZOJ2716: [Violet 3]天使玩偶 BZOJ氪金无极限... 其实这两道是同一题. 附上2648的题面: Description 这天,SJY显得无聊. ...
- [KDTree] [BZOJ2716] [Violet 3] 天使玩偶
题目描述 Description Ayu在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后的今天,Ayu却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们 ...
- bzoj2716 [Violet 3]天使玩偶
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec Memory Limit: 128 MB Submit: 2160 Solved: 936 [Submit][Sta ...
- 天使玩偶/SJY摆棋子
P4169 [Violet]天使玩偶/SJY摆棋子 CDQ分治的题目. 我们发现题目要我们求的\(|A_x-B_x|+|A_y-B_y|\)的绝对值号比较恶心. 试想一下怎么去掉 如果所有的点都在我们 ...
- P4169 [Violet]天使玩偶/SJY摆棋子 [CDQ分治]
天使玩偶天使玩偶天使玩偶 Ayu 在七年前曾经收到过一个天使玩偶,当时她把它当作时间囊埋在了地下.而七年后 的今天,Ayu 却忘了她把天使玩偶埋在了哪里,所以她决定仅凭一点模糊的记忆来寻找它. 我们把 ...
最新文章
- php和python区别-编程语言之PHP与Python之间的差异
- 关于AttributeError: type object ‘XXX‘ has no attribute ‘XXX‘的问题
- 多线程并发如何高效实现生产者/消费者?
- 如何在Jackson中使用PropertyNamingStrategy
- mac mysql创建本地数据库_【mac】配置本地数据库
- java垃圾回收 分代_Java分代垃圾回收策略原理详解
- lua判断字符不为空或空格_Lua判断字符串前缀是否为指定字符的3种方法
- 在容器内源码安装PostgreSQL13.2
- [bzoj3585] Rmq Problem / mex
- JavaScript—计算图片加载的张数。
- CTU Open Contest 2019 G. Beer Mugs 异或维护奇偶性
- 为什么博士后的年薪远远高于刚入职的大学老师?
- Hinton论文系列-Reducing the dimensionality of data with neural networks
- 大数据与传统数据对比
- python3爬虫实战姚良_Python3.X 爬虫实战(缓存与持久化)
- Java基础知识总结1(数据类型)
- jxTMS--web界面定义
- jsp 的 4 种作用域?
- 通过百度地图模糊查询获取详细地址?正则匹配
- 学生成绩管理系统数据库设计--MySQLSQL Server