2020牛客寒假算法基础集训营4 I 匹配星星
https://ac.nowcoder.com/acm/contest/3005/I
又做麻烦了,悲催。。。
将所有星星按x坐标为第一关键字,z为第二关键字排好序
那么一个z=1的星星匹配的是x比它小的,y比他小但又尽可能大的星星
用线段树维护所有的y坐标
如果z=0,直接把y坐标插入线段树
如果z=1,在线段树中找小于它的y坐标,y又最大的那个星星,线段树中删走
题解直接用的set,而且在x相同时先处理z=1再处理z=0更方便。唉。。。
#include<cstdio>
#include<algorithm> using namespace std; #define N 100002 struct node
{
int x,y;
}e0[N],e1[N]; int m,has[N];
int sum[N<<],tot; bool cmp(node p,node q)
{
return p.x<q.x;
} void change(int k,int l,int r,int pos,int x)
{
sum[k]+=x;
if(l==r) return;
int mid=l+r>>;
if(pos<=mid) change(k<<,l,mid,pos,x);
else change(k<<|,mid+,r,pos,x);
} void query2(int k,int l,int r,int opl,int opr)
{
if(l>=opl && r<=opr)
{
tot+=sum[k];
return;
}
int mid=l+r>>;
if(opl<=mid) query2(k<<,l,mid,opl,opr);
if(opr>mid) query2(k<<|,mid+,r,opl,opr);
} int query(int k,int l,int r,int pos)
{
if(l==r)
if(sum[k]) return l;
else return ;
int mid=l+r>>;
tot=;
query2(,,m,mid+,pos);
if(tot) return query(k<<|,mid+,r,pos);
return query(k<<,l,mid,pos);
} int main()
{
int n,x,y,z,n0=,n1=;
scanf("%d",&n);
for(int i=;i<=n;++i)
{
scanf("%d%d%d",&x,&y,&z);
if(z) e1[++n1].x=x,e1[n1].y=y;
else e0[++n0].x=x,e0[n0].y=y;
has[i]=y;
}
sort(has+,has+n+);
m=unique(has+,has+n+)-has-;
sort(e0+,e0+n0+,cmp);
sort(e1+,e1+n1+,cmp);
e0[n0+].x=1e9+;
int now0=,now1=,i,mx,ans=;
while(now1<=n1 && e1[now1].x<=e0[].x) now1++;
while(now0<=n0)
{
for(i=now0;i<=n0 && e0[i].x==e0[now0].x;++i) change(,,m,lower_bound(has+,has+m+,e0[i].y)-has,);
while(now1<=n1 && e1[now1].x<=e0[now0+].x)
{
mx=query(,,m,lower_bound(has+,has+m+,e1[now1].y)-has-);
if(mx) change(,,m,mx,-),ans++;
now1++;
}
now0=i;
}
printf("%d",ans);
return ;
}
2020牛客寒假算法基础集训营4 I 匹配星星的更多相关文章
- 2020牛客寒假算法基础集训营2 J题可以回顾回顾
2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...
- 2020牛客寒假算法基础集训营1 J题可以回顾回顾
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...
- 2020牛客寒假算法基础集训营4-F树上博弈
链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...
- 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】
链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...
- 2020牛客寒假算法基础集训营1 F-maki和tree
链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 2020牛客寒假算法基础集训营5 G街机争霸
题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...
- 2020牛客寒假算法基础集训营4 D:子段异或
D : 子段异或 考察点 : 位运算,前缀和,异或的性质和应用 坑点 : 0 - L 的异或值是 0 的话也是一个区间 相同的值可能有多个,那么这时候区间就会有多个(x * (x + 1) / 2) ...
- 2020牛客寒假算法基础集训营6 I.导航系统 (最小生成树)
https://ac.nowcoder.com/acm/contest/3007/I 题中给定的图必定是一棵树 容易发现,如果将输入的N(N-1)个距离看做N(N-1)条无向边的话,那么如果数据合法, ...
- 2020牛客寒假算法基础集训营5 G.街机争霸 (bfs)
https://ac.nowcoder.com/acm/problem/201961 预处理出僵尸走的路径,僵尸走的周期长度应该为2k-2,在普通的bfs基础上加上一维表示时间,从当前位置x,y和和时 ...
随机推荐
- web-pc项目中index页面分析
先上HTML代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pag ...
- 【PAT甲级】1005 Spell It Right (20 分)
题意: 给出一个非零整数N(<=10^100),计算每位之和并用英文输出. AAAAAccepted code: #include<bits/stdc++.h> using name ...
- 移动端300毫秒事件响应延迟解决方法[fastclick]
vue-cli[2.x]中: 安装 npm install fastclick --save 使用: 在main.js中 :先 import fastClick from 'fastclick' 然后 ...
- Python 全国考级二级
第1章 Python概述 [Python语言简介] Python是一种跨平台.开源.免费的解释型高级动态编程语言,是一种通用编程语言. Python支持命令式编程和函数式编程两种方式,并且完全支持面 ...
- Using SmartAssembly with MSBuild
SmartAssembly 6 SmartAssembly 6 documentation Building your assembly Using SmartAssembly with MSBuil ...
- java也可以做出很漂亮的界面
其实java想把界面做漂亮点的话,只要把背景做好就行了,在jdk1.6以后可以继承JFrame,或JWindow后如下设置即可 setUndecorated(true);//不要标题栏的修饰,主要防止 ...
- C#中集合接口关系笔记
IEnumerable IEnumerable接口是所有集合类型的祖宗接口,其作用相当于Object类型之于其它类型.如果某个类型实现了IEnumerable接口,就意味着它可以被迭代访问,也就可以称 ...
- 延迟加载以及mybatis一级二级缓存
延迟加载 延迟加载:在真正使用数据时才发起查询,不用的时候不查询,又叫按需查询(懒加载) 立即加载:不管用不用,只要调用方法,直接发起查询 表关系:一对多 多对一 一对一 ...
- day06 python 3中的编码
#python2 和 python3 的一些区别 ''' #python2 print('aaa') print'aaa' range() xrange()生成器 raw_input() #pytho ...
- ajax请求Controller,返回信息乱码问题
参考:https://blog.csdn.net/hgg923/article/details/53610548 @RequestMapping(value = "changeMobile& ...