一、题面

UVA11020

二、分析

最近脑子有点不好使吧,这题还想了很久。

对于给定的两个值要满足题面中的条件,那么我们可以把这两个值转化到平面中的坐标去理解。

首先,需要考虑的是维护的所有点其实是一个严格有序的,画个图就可以理解了。

此时,在维护的所有点的基础上,如果来了一个点,我们可以先考虑x坐标。

如果这个点x值比所有维护的点中最小的x值还小,那么它必然是有效的,之间加入,再删除后面被这个点控制的点。

如果这个点的y值比在象限中它前面(相对于x)的点的y值要大,那就不需要加入了,因为被它前面这个点控制了。

如果比它前面这个点的y值小,其实就需要加入,因为本身维护的所有点是有序的,那么这个点加入之后必然是有效的,接下来就可以考虑删除被这个点控制的点了。

删除点的话,只需要考虑后面x值比当前点大的点,且y值比当前点大。画个图就好理解了。

实现的话,用有序的且可以重复的multiset,结合lower_bound和upper_bound。

三、AC代码

 #include <bits/stdc++.h>

 using namespace std;

 struct Node
{
int l, c;
bool operator<(const Node &t)const
{
return l < t.l || (l == t.l && c < t.c);
}
}; int main()
{
//freopen("input.txt", "r", stdin);
int T, N;
scanf("%d", &T);
for(int Case = ; Case <= T; Case++)
{
if(Case > ) puts("");
printf("Case #%d:\n", Case);
multiset<Node> ST;
Node p;
scanf("%d", &N);
for(int i = ; i < N; i++)
{
scanf("%d %d", &p.l, &p.c);
multiset<Node>::iterator itr = ST.lower_bound(p);
if(itr == ST.begin() || (--itr)->c > p.c)
{
ST.insert(p);
itr = ST.upper_bound(p);
while(itr != ST.end() && itr->c >= p.c) ST.erase(itr++);
}
printf("%d\n", ST.size());
}
}
return ;
}

最新文章

  1. .net之工作流工程展示及代码分享(四)主控制类
  2. 开发错误记录8:Unable to instantiate application com
  3. 数据库的点数据根据行政区shp来进行行政区处理,python定时器实现
  4. AJAX练习(一):制作可以自动校验的表单(从原理上分析ajax的作用)
  5. AOJ 2200 Mr. Rito Post Office
  6. android开发在adapter中使用反射添加元素
  7. 转载:C++ list 类学习笔记
  8. 常用hash函数
  9. 微信企业号 出现redirect_uri unauthorized 50001 解决办法
  10. 网络编程之TCP
  11. 阿里CEO张勇公开信:把眼光从股市回到客户身上
  12. Chrome 下动画卡顿问题的另一种可能
  13. css如何让div和页面等高?
  14. java基础(9) - 泛型解析
  15. Dubbo(一) 开始认识Dubbo,分布式服务框架
  16. 如何在debug vue-cli建立的项目
  17. Nest.js WebSocket
  18. JS-使用indexof来统计字符出现次数
  19. 为11.2.0.2 Grid Infrastructure添加节点
  20. python3两个字典的合并

热门文章

  1. Python中ndarray数组切片问题a[-n -x:-y]
  2. asp.net mvc 5框架揭秘(文摘)
  3. 2016-2017-2 20155223 实验二 《Java面向对象程序设计》
  4. Cacti部署
  5. SSO单点登录三种情况的实现方式详解(转载)
  6. Lucene--FuzzyQuery与WildCardQuery(通配符)
  7. UnicodeEncodeError:&#39;latin-1&#39; codec can&#39;t encode characters in position 0-1: ordinal not in range(256)
  8. Java Socket实现基于TCP和UDP多线程通信
  9. Jquery EasyUI 各组件属性、事件详解
  10. C# 实用小类