牛客小白月赛16 F-小石的妹子(二维偏序+线段树)
传送门
题意:是中文,自己看.
定义rkirk_irki是第iii个人的编号
每次找到一些人iii满足不存在一个jjj使得aj>aia_j>a_iaj>ai且bj>aib_j>a_ibj>ai
发现这样并不好操作,没有办法每次选一些人出来标记.
换个说法,iii的rkirk_irki是那些满足aj>aia_j>a_iaj>ai且bj>aib_j>a_ibj>ai人的max(rkj)+1max(rk_j)+1max(rkj)+1
由于是二维偏序的,所以先按照aaa从大到小排序
此时考虑第iii个人,由于[i+1,n][i+1,n][i+1,n]个人一定不是我们想要的那些jjj
而[1,i−1][1,i-1][1,i−1]中,只有满足bj>bib_j>b_ibj>bi的才是符合条件的jjj,才可以更新。
那么,可以以bib_ibi离散化后为下标,rkirk_irki为值维护一颗线段树
按照aia_iai从大到小依次加入
那么第iii个人的rkrkrk值肯定不会被aja_jaj小于自己的那些jjj影响
然后去那些bjb_jbj大于自己的去找一个max(rkj)max(rk_j)max(rkj),自己的值就再往上加一就好了
题目保证了所有a,ba,ba,b不相等
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mid (l+r>>1)
#define ls (rt<<1)
#define rs (rt<<1|1)
#define lson ls,l,mid
#define rson rs,mid+1,r
const int maxn = 1e5+10;
struct p{ int x,y,id; }s[maxn];
int b[maxn],n,ans[maxn],w[maxn<<2];
bool com(p a,p b){ return a.x>b.x; }
void update(int rt,int l,int r,int x,int val)
{if( l>x||r<x ) return;if( l==r && l==x ){ w[rt]=val; return; }update(lson,x,val); update(rson,x,val);w[rt] = max( w[ls],w[rs] );
}
int ask(int rt,int l,int r,int L,int R)
{if( l>=L&&r<=R ) return w[rt];if( l>R||r<L ) return 0;return max( ask(lson,L,R),ask(rson,L,R) );
}
signed main()
{cin >> n;for(int i=1;i<=n;i++){cin >> s[i].x >> s[i].y;s[i].id = i, b[i] = s[i].y;}sort( s+1,s+1+n,com );sort( b+1,b+1+n );for(int i=1;i<=n;i++)s[i].y = lower_bound( b+1,b+1+n,s[i].y )-b;for(int i=1;i<=n;i++){ans[ s[i].id ] = ask(1,1,n,s[i].y,n )+1;update( 1,1,n,s[i].y,ans[ s[i].id ] );}for(int i=1;i<=n;i++) cout << ans[i] << endl;
}
牛客小白月赛16 F-小石的妹子(二维偏序+线段树)相关推荐
- 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)
链接:https://ac.nowcoder.com/acm/contest/392/F 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32768K,其他语言65536 ...
- 牛客小白月赛16 小石的签到题(博弈)
牛客小白月赛16 小石的签到题 链接:https://ac.nowcoder.com/acm/contest/949/A来源:牛客网 题目描述 输入描述: 共一行,输入一个数 nnn . 输出描述: ...
- 牛客小白月赛61 F.选座椅(双指针)
牛客小白月赛61 F.选座椅(双指针) 显然 ( l , r ) (l,r) (l,r)满足 ( l , r + 1 ) (l,r+1) (l,r+1)满足. 那么可以考虑双指针,枚举 l l l,然 ...
- 牛客小白月赛2 F.黑黑白白
牛客小白月赛2 F.黑黑白白 题目链接 题目描述 艮为山,动静得宜,适可而止:兑为泽,刚内柔外,上下相和. 艮卦:兼山,艮:君子以思不出其位.财帛常打心头走,可惜眼前难到手,不如意时且忍耐,逢着闲事休 ...
- 牛客小白月赛16练习
G-小石的图形 链接:https://ac.nowcoder.com/acm/contest/949/G 来源:牛客网 题目描述 小石想在一面墙旁边建造一段长度为 n 的篱笆来围出一块地(如图). 求 ...
- 牛客小白月赛9: F. 暴力出奇迹(思维题)
链接:https://ac.nowcoder.com/acm/contest/275/F 来源:牛客网 题目描述 给定一个序列,寻找一对l,r,满足1 ≤ l ≤ r ≤ n 最大化的值 其中表示将a ...
- 牛客小白月赛17 F小黄鸭(计算几何+积分+二分)
链接:https://ac.nowcoder.com/acm/contest/1085/F 来源:牛客网 题目描述 小sun的寝室有一只小黄鸭,小黄鸭浮在水面上的样子特别可爱,现在小sun有一个问题: ...
- 牛客小白月赛16——D 小阳买水果
链接:https://ac.nowcoder.com/acm/contest/949/D 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客小白月赛16 D-小阳买水果(单调队列)
链接:https://ac.nowcoder.com/acm/contest/949/D 来源:牛客网 题目描述 水果店里有 n个水果排成一列.店长要求顾客只能买一段连续的水果. 小阳对每个水果都有一 ...
最新文章
- windows下Python到linux运行遇到的字符编码问题
- 等式约束和不等式约束下的KKT条件求法
- 山师计算机试题答案,山师计算机应用技术试题及答案
- html的表单图形验证码怎么做,django中简单图形验证码实现
- python定时执行脚本实例
- 2018/12/18 Mac 版 VMWare配置VMNet8 成功版
- 利用ipsec配置tcp/ip用于安全连接
- XP系统中如何查哪些网址曾经远程连接过本机器。
- 认证Authentication
- 教你如何使用Ip地址进行精准定位
- 纯CSS实现button按钮
- python 金融量化盘后分析系统V0.48
- 淘宝网打开很慢、特别慢的完美解决方法
- 解决启动eureka报错Unable to start web ... nested exception is org.springframework.boot.web.server.WebS
- 大学计算机基础及应用课后题答案第二版,《大学计算机基础》课后题答案完整版...
- java实训意义_java实习心得体会
- leetcode954.二倍数对数组C++(绝对值排序)
- scrapy 抓取拉钩 ajax
- Window系统中Hosts文件介绍
- 马云给员工的超牛演讲