博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 110020 Efficient Solutions (STL)
阅读量:4965 次
发布时间:2019-06-12

本文共 1060 字,大约阅读时间需要 3 分钟。

把一个人看出一个二维的点,优势的点就是就原点为左下角,这个点为右上角的矩形,包含除了右上角以外边界,其他任意地方不存在点。

那么所有有优势的点将会形成一条下凹的曲线。

因为可能有重点,用multiset,按照x优先,相同时再比较y的顺序排序,动态维护满足条件的总人数。

当新加的P点的y坐标大于左边的点的时候没有优势,忽略,用lower_bound判断一下。

当新加的P点有优势,但是可能使得其他的的点失去优势,依次把后面的点不满足条件的点删除。

红黑树好复杂。

#include
using namespace std;struct Point{ int x,y; bool operator < (const Point & r) const { return x < r.x || ( x == r.x && y < r.y ); }};multiset
S;int main(){ int T, kas = 0; scanf("%d",&T); while(T--){ if(kas) puts(""); int n; scanf("%d",&n); printf("Case #%d:\n",++kas); S.clear(); while(n--){ Point P; scanf("%d%d",&P.x,&P.y); auto it = S.lower_bound(P); if(it == S.begin() || (--it)->y > P.y){ it = S.insert(P); while(it != S.end() && *it == P) it++; while(it != S.end() && it->y >= P.y) S.erase(it++); } printf("%d\n",S.size()); } } return 0;}

 

转载于:https://www.cnblogs.com/jerryRey/p/4803715.html

你可能感兴趣的文章
【codeforces 767A】Snacktower
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
执行了的程序,才是你的程序.
查看>>
struts2.x + Tiles2.x读取多个xml 配置文件
查看>>
表单校验之datatype
查看>>
python第六篇文件处理类型
查看>>
hdu 3183 A Magic Lamp 贪心
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
面试题14 调整数组顺序使奇数位于偶数前面
查看>>
grid网格布局
查看>>
flask简单的注册功能
查看>>
JSP常用标签
查看>>
dashucoding记录2019.6.7
查看>>
IOS FMDB
查看>>
编码总结,以及对BOM的理解
查看>>
九涯的第一次
查看>>
PHP5.3的VC9、VC6、Thread Safe、Non Thread Safe的区别
查看>>
Android中全屏或者取消标题栏
查看>>