UVa 11020 Efficient Solutions(平衡二叉树/multiset )
题意:有n个人,每个人有x、y两个属性,每次输入一个人(x,y)。如果当前不存在一个人(x`,y`)的属性满足x`<=x,y`<y或者x`<x,y`<=y,就说这个人是有优势的。每次输入时要求输出当前有多少个人是有优势的。
思路:平衡二叉树。
一个人一旦失去优势就再也不可能得到优势。可以用multiset来存优势人群(因为可能出现x和y完全相同的人)。对于每次输入的人,二分寻找第一个满足?<=x的人,记为(x`,y`),如果y>=y`,那么该人是没有优势的,可以忽略。其他情况下,即这是第一个人或者y<y`,则说明这个人有优势,可以插入到树上,这个时候会导致一些人(x``,y``)失去优势,即满足x`<=x``,y`<=y``的这部分人,需要删掉。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<set>
using namespace std;
struct People
{
int x,y;
People(int a,int b):x(a),y(b) {}
bool operator < (const People p) const
{
return x<p.x||(x==p.x&&y<p.y);
}
};
multiset<People> S;
int main()
{
;
scanf("%d",&T);
while(T--)
{
int x,y;
int n;
scanf("%d",&n);
S.clear();
printf("Case #%d:\n",++kase);
while(n--)
{
scanf("%d%d",&x,&y);
People p(x,y);
multiset<People>::iterator it=S.lower_bound(p);
if(it==S.begin()||!((--it)->y<=y))
{
S.insert(p);
it=S.upper_bound(p);
while(it!=S.end()&&it->y>=y) S.erase(it++);
}
printf("%d\n",S.size());
}
if(T) printf("\n");
}
;
}
UVa 11020 Efficient Solutions(平衡二叉树/multiset )的更多相关文章
- UVA - 11020 Efficient Solutions(Multiset)
本题利用multiset解决.根据题意,如果我们用P(x,y)表示一个人,因为人可以相同,所以用multiset.我们会发现,如果所有人群都是有优势的,那么这些点呈现一个递减的趋势.如果刚刚插入一个人 ...
- UVA 11020 - Efficient Solutions(set)
UVA 11020 - Efficient Solutions 题目链接 题意:每个人有两个属性值(x, y).对于每个人(x,y)而言,当有还有一个人(x', y'),假设他们的属性值满足x' &l ...
- STL(multiset) UVA 11020 Efficient Solutions
题目传送门 题意:训练指南P228 分析:照着书上的做法,把点插入后把它后面不占优势的点删除,S.size ()就是优势的人数,时间复杂度O (nlogn) #include <bits/std ...
- UVA 11020 Efficient Solutions+multiset的应用
题目链接:点击进入 首先来讲,非常easy看到我们事实上仅仅要维护优势人群的集合:假设增加一个新的人,我们首先看一下优势人群中是否有人会让这个人失去优势,假设没有,则将这个人插入集合中.但要注意到这个 ...
- uva 11020 - Efficient Solutions ——平衡BST
链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&am ...
- uva 11020 Efficient Solutions
题意:给你n个人,有两个属性x.y,如果不存在另外一个人x2,y2满足 x2<=x,y2<y 或者 x2<x,y2<=y,那么就称这个人是有优势的,每次给你一个人得信息,问你当 ...
- UVa 11020 Efficient Solutions (BST)
题意:给按顺序给定 n 个人群,用x和y来描述,如果有没有任何一个x' < x y' <= y 或 x '<= x y' <= y,那么这个群体就是优势群体, 让你求出每放入一 ...
- UVA 11020 Efficient Solutions (BST,Splay树)
题意:给n个坐标.一个坐标(x,y)若有无存在的坐标满足x1<x && y1<=y 或 x1<=x && y1<y 时,此坐标(x,y)是就 ...
- UVA 110020 Efficient Solutions (STL)
把一个人看出一个二维的点,优势的点就是就原点为左下角,这个点为右上角的矩形,包含除了右上角以外边界,其他任意地方不存在点. 那么所有有优势的点将会形成一条下凹的曲线. 因为可能有重点,用multise ...
随机推荐
- js上下滚屏效果,代码通过测试
这是html代码 <div class="box"> <div class="bcon"> <h1><b>领号实 ...
- linux笔记:linux软件包管理,软件安装位置
linux软件包简介 软件包分类:1.源码包(用C语言等编写的源代码,没有进行编译):脚本安装包(对源码包进行了安装优化的源码包)优点:开源,可修改可以自由选择所需的功能编译安装,更适合自己的系统,稳 ...
- 日期操作类--GregorianCalendar类
GregorianCalendar--API JavaTM Platform Standard Ed. 6 GregorianCalendar类 Calendar类实现了公历日历,GregorianC ...
- GitHub学习资料
GitHub账户注册注册了有一年多了(Joined on 13 Apr 2015),一直以来都是本地命令行上传到内网的Git服务器Gitlab.最近正好在学习新的编程语言,所以当初荒废的GitHub想 ...
- Compound Interest Calculator4.0
Compound Interest Calculator4.0 1.团队协作准备:每个同学在github上完成FORK,COMMENT(学号后三位+姓名),PR,MERGE的过程. 2.你的RP由你的 ...
- 实验二Step1-有序顺序表
#include<stdio.h> struct job { ];//作业名称 char status;//当前状态 int arrtime;//到达时间 int reqtime;//要求 ...
- WMI远程访问问题解决方法
WMI 全称为:Microsoft Windows Management Instrumentation (WMI) 按微软的介绍大致如下: WMI 是 Microsoft 主要的针对 W ...
- (07)odoo扩展API
* 打开XML-RPC 连接 >>> import xmlrpclib >>> srv, db = 'http://localhost:8069', ' ...
- 198. 213. 337. House Robber -- 不取相邻值的最大值
198. House Robber You are a professional robber planning to rob houses along a street. Each house ha ...
- 新建txt文件新增内容并打印出
#!/usr/bin/python import os file1=open("C:\Python34\ceshi.txt","a+"); #a+开一个文件用 ...