UVA11020 优势人群(multiset)
题意:
给你N个人,每个人有两个权值,x,y对于某一个人,如果不存在某一个人x' y',
x' < x && y' <= y 或者x' <= x && y' < y那么这个人就是优势人群,对于输入的这n个人,每输入一个人的时候就输出一次当前这个人加入之后的当前优势人群数量。
思路:
可以在一个二维坐标系上找到规律,所有人都可以映射到二维坐标系上的某一个点,对于任意两个人不同的人(x,y都相等看成一个人)来说,如果他俩都是优势人群,那么他俩肯定存在这样的关系 x < x' && y > y',这样就在坐标系上形成了一个递减的线,还有就是在加人的过程中一定要记住,如果这个人在某一步不属于优势人群,那么他以后就不可能再是优势人群中的了,然后考虑每次增加一个人,有两种情况,(1)当前这个人不是优势人群,那么直接不做任何操作,判断方法比较简单,可以直接找到"大于等于"他的的第一个数的前一个,如果这个数的y比他小,那么就直接断定当前这个人不是优势人群。(2)就是加入当前这个人是优势人群,那么就直接先把这个人加到multiset中,加入之后可能吧别的人变成非优势群体,然后我们在找到"大于"当前这个人的第一个人开始,一直往后,如果y是大于等于当前这个人的,那么直接删除。
**如果a能淘汰b,b能淘汰c,那么a也一定能淘汰c,所以如果直接淘汰b不会影响淘汰c的
提示:
(1) 这里的大于等于只是位置上区分的(排序位置是x小的或者x相等y小的在前面)。
(2) 用multiset(可重集)的原因是可能有多个人x,y同时相等
(3) 如果不懂的话建议在二维坐标上模拟下,还有就是考虑下(1,2)(1,2)(1,2)(1,3)这样的数据,有利于理解二级排序。
(4)*.lower_bound 大于等于的第一个数
(5)*.upper_bound 大于的第一个数
#include<set>
#include<stdio.h>
using namespace std;
typedef struct NODE
{
int x ,y;
friend bool operator < (NODE a ,NODE b)
{
return a.x < b.x || a.x == b.x && a.y < b.y;
//这个地方自己目前有不理解的地方,就是我之前写的优先队列的姿势在结合本体
// 应该是应该是return a.x > b.x || a.x == b.x && a.y > b.y;
//没有正式的学过C++所以..
}
}NODE;
multiset<NODE>myset;
multiset<NODE>::iterator it;
int main ()
{
int t ,cas = 1 ,i ,x ,y ,n;
NODE now;
scanf("%d" ,&t);
while(t--)
{
printf("Case #%d:\n" ,cas ++);
scanf("%d" ,&n);
myset.clear();
for(i = 1 ;i <= n ;i ++)
{
scanf("%d %d" ,&x ,&y);
now.x = x ,now.y = y;
it = myset.lower_bound(now);
if(it == myset.begin() ||(--it)->y > y)
{
myset.insert(now);
it = myset.upper_bound(now);
while(it != myset.end() && it -> y >= y)
myset.erase(it++);
}
printf("%d\n" ,myset.size());
}
if(t) printf("\n");
}
return 0;
}
UVA11020 优势人群(multiset)的更多相关文章
- UVa 11020 Efficient Solutions(平衡二叉树/multiset )
题意:有n个人,每个人有x.y两个属性,每次输入一个人(x,y).如果当前不存在一个人(x`,y`)的属性满足x`<=x,y`<y或者x`<x,y`<=y,就说这个人是有优势的 ...
- UVA 11020 Efficient Solutions+multiset的应用
题目链接:点击进入 首先来讲,非常easy看到我们事实上仅仅要维护优势人群的集合:假设增加一个新的人,我们首先看一下优势人群中是否有人会让这个人失去优势,假设没有,则将这个人插入集合中.但要注意到这个 ...
- UVA - 11020 Efficient Solutions(Multiset)
本题利用multiset解决.根据题意,如果我们用P(x,y)表示一个人,因为人可以相同,所以用multiset.我们会发现,如果所有人群都是有优势的,那么这些点呈现一个递减的趋势.如果刚刚插入一个人 ...
- STL(multiset) UVA 11020 Efficient Solutions
题目传送门 题意:训练指南P228 分析:照着书上的做法,把点插入后把它后面不占优势的点删除,S.size ()就是优势的人数,时间复杂度O (nlogn) #include <bits/std ...
- 『Asp.Net 组件』Asp.Net 服务器组件 的开发优势和劣势
在写<Asp.Net 服务器组件系列文档>之前,笔者不才,揣测微软战略用意: 微软利益诉求莫过于 微软产品和技术的市场份额: 因此,微软战略之一莫过于将 所有开发人员 团聚在 微软周围,以 ...
- 【公众号系列】SAP HANA 平台的优势
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP HANA 平台的优势 ...
- MySQL8.0-NoSQL和SQL的对比及MySQL的优势
一.SQL VS NoSQL SQL:关系型数据库,用SQL语句来操作数据 NOSQL:非关系型数据库,NoSQL的含义是不仅仅有SQL,而实际上大多数NoSQL不用SQL来操作数据 常见的关系型数据 ...
- 神贴真开眼界:为什么很多人倡导重视能力和素质,但同时对学历有严格要求?——代表了上一场比赛的输赢,招聘成本很重要。如果上一场游戏失败了,尽量让自己成为当前群体的尖子。学历只是其中的一个作品而已,但学历代表了学生时代为之做出的牺牲。人群自有偏向集中性 good
对于软件工程师职位,没学历没关系,如果真觉得自己才高八斗,请在简历里附上 github项目链接或者 appstore/google play上你的作品.如果学历比别人低,那么想必是把时间和精力用在了其 ...
- UVA11020 Efficient Solutions
思路 先判断一个点能不能插入,能插入的话删除所有因为它而没有优势的点 注意 写 S.erase(it); it++; 会RE 要写 S.erase(it++); 代码 #include <cst ...
随机推荐
- Java 语言基础 02
语言基础·二级 顺序结构语句 * A:什么是流程控制语句 * 流程控制语句:可以控制程序的执行流程. * B:流程控制语句的分类 * 顺序结构 * 选择结构 * 循环结构 * ...
- 循环单链表定义初始化及创建(C语言)
#include <stdio.h> #include <stdlib.h> /** * 含头节点循环单链表定义,初始化 及创建 */ #define OK 1; #defin ...
- SQL排名问题,100% leetcode答案大公开!
(首先原谅我最近新番看多了,起了一个中二的名字) 最近在找实习,所以打算系统总结(复习)一下sql中经常遇到问题.不管是刷leetcode还是牛客的sql题,有一个问题总是绕不开的,那就是排名问题.其 ...
- java例题_33 等腰输出杨辉三角
1 /*33 [程序 33 杨辉三角] 2 题目:打印出杨辉三角形(要求打印出 10 行如下图) 3 程序分析: 4 1 5 1 1 6 1 2 1 7 1 3 3 1 8 1 4 6 4 1 9 1 ...
- Nginx日志分析 awk 命令
通过Nginx日志,可以简单分析WEB网站的运行状态.数据报表.IP.UV(unique visitor指独立访客访问数,一台电脑终端为一个访客.).PV(page view即页面访问量,每打开一次页 ...
- Prometheus联邦
联邦使得一个 Prometheus 服务器可以从另一个 Prometheus 服务器提取选定的时序. 1. 使用场景 Prometheus 联邦有不同的使用场景.通常,联邦被用来实现可扩展的 Prom ...
- 百度地图一套JS API,非常实用
百度地图一套JS API,非常实用 import mapStyleJson from "./mapStyleJson"; import $ from "jquery&qu ...
- C++并发与多线程学习笔记--async、future、packaged_task、promise
async future packaged_task promise async std:async 是个函数,用来启动一个异步任务,启动起来一个异步任务之后,返回一个std::futre对象,启动一 ...
- 别再面向 for 循环编程了,Spring 自带的观察者模式就很香!
上一篇:JDK 自带的观察者模式就很香! 前段时间栈长给大家分享了什么是观察者模式,以及在 JDK 中如何实现观察者模式,现在都是 Spring 的天下了,今天就再分享下如何在 Spring/ Spr ...
- [.net] 关于Exception的几点思考和在项目中的使用(三)
本文链接: https://www.cnblogs.com/hubaijia/p/about-exceptions-3.html 系列文章: 关于Exception的几点思考和在项目中的使用(一) 关 ...