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 匹配星星的更多相关文章

  1. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  2. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  3. 2020牛客寒假算法基础集训营4-F树上博弈

    链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...

  4. 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 ...

  5. 2020牛客寒假算法基础集训营1 F-maki和tree

    链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  6. 2020牛客寒假算法基础集训营5 G街机争霸

    题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...

  7. 2020牛客寒假算法基础集训营4 D:子段异或

    D : 子段异或 考察点 : 位运算,前缀和,异或的性质和应用 坑点 : 0 - L 的异或值是 0 的话也是一个区间 相同的值可能有多个,那么这时候区间就会有多个(x * (x + 1) / 2) ...

  8. 2020牛客寒假算法基础集训营6 I.导航系统 (最小生成树)

    https://ac.nowcoder.com/acm/contest/3007/I 题中给定的图必定是一棵树 容易发现,如果将输入的N(N-1)个距离看做N(N-1)条无向边的话,那么如果数据合法, ...

  9. 2020牛客寒假算法基础集训营5 G.街机争霸 (bfs)

    https://ac.nowcoder.com/acm/problem/201961 预处理出僵尸走的路径,僵尸走的周期长度应该为2k-2,在普通的bfs基础上加上一维表示时间,从当前位置x,y和和时 ...

随机推荐

  1. Java基础 -1.2

    Shell是脚本程序的含义 在很多编程语言中为了方便使用者进行代码的开发 都会有shell交互式编程环境 可能是为了进行一些简短的程序验证 但是在java里面就必须编写很多的结果代码才可以实现 为了解 ...

  2. 使用java实现二叉查找树的插入,修改和删除方法

    目前使用的是根据key的hashcode来进行排序,并且没有考虑hash碰撞的问题 package com.zhou.tree; import java.util.Comparator; import ...

  3. CentOS7编译安装httpd-2.4.41

    安装参考环境: CentOS Linux release 7.5.1804 (Core) 一.安装依赖包 httpd安装的依赖包 # yum -y install pcre-devel # yum - ...

  4. Spring Boot整合Mybatis(注解方式和XML方式)

    其实对我个人而言还是不够熟悉JPA.hibernate,所以觉得这两种框架使用起来好麻烦啊. 一直用的Mybatis作为持久层框架, JPA(Hibernate)主张所有的SQL都用Java代码生成, ...

  5. 【AOP】在Aspect中无法获取实现类方法的注解

    问题 MethodSignature methodSignature = (MethodSignature) (joinPoint.getSignature()); Method method = m ...

  6. linux的切换目录操作

    cd 是 change directory 用法 cd [目录名] 几个特殊目录: ”.“或者”./“当前目录        ”..“或者"../"上级目录        “../ ...

  7. 吴裕雄--天生自然HADOOP学习笔记:Shell工具使用

    实验目的 学习使用xshell工具连接Linux服务器 在连上的服务器中进入用户目录 熟悉简单的文件操作命令 实验原理 熟悉shell命令是熟悉使用linux环境进行开发的第一步,我们在linux的交 ...

  8. 无需密码攻击 Microsoft SQL Server

    最近的一次渗透测试里,在我们捕获的一些数据包中发现了一些未经加密的 Microsoft SQL Server(MSSQL) 流量.起初,我们认为这样就可以直接嗅探到认证凭证,然而,MSSQL 加密了认 ...

  9. Javaweb实现简单的选课系统(主要技术包括jsp、Servlet、Javabean)

    一.背景信息: 首先,这个选课系统是上周一老师在课堂上让我们做的测试,考试时长三个小时,我只做了一半,也没有实现选课流程. 由于上周忙于写实验报告没有时间继续完成这个测试.这周用前天和昨天一共七个小时 ...

  10. 新闻网大数据实时分析可视化系统项目——2、linux环境准备与设置

    1.Linux系统常规设置 1)设置ip地址 使用界面修改ip比较方便,如果Linux没有安装操作界面,需要使用命令:vi /etc/sysconfig/network-scripts/ifcfg-e ...