cf12D Ball(MAP,排序,贪心思想)
题意:
N位女士一起聚在一个舞厅。每位女士有三个特征值B,I,R。分别代表美貌,智慧,富有。
对于一位女士而言,如果存在一个女士的B,I,R都分别大于她自己的B,I,R。则她自己会自杀。
统计总共有多少个女士会自杀。
1 ≤ N ≤ 500000
0 ≤ Bi, Ii, Ri ≤ 109
思路:
这题想不出来。看了题解后觉得很妙。
思想和最长上升子序列的贪心做法有相像的地方。
按B从小到大排,若B相等按I自大到小排,若I相等,按R从小到大排。
*:存在map里的东西(map[key]=val)必有:key1<key2<key3<... 且 val1>val2>val3>... (不存在key[i]<key[j]且val[i]<val[j],因为<key[i],val[i]>可以去掉)
*边界是个好东西。
代码:
int const N = 500005;
int const oo=1e9+5; struct node{
int B,L,R;
}
lady[N]; int n; bool cmp(node a,node b){
if(a.B==b.B){
if(a.L==b.L){
return a.R<b.R;
}else{
return a.L>b.L;
}
}
else{
return a.B<b.B;
}
} map<int,int> mp;
map<int,int>::iterator it; int main(){ cin>>n;
rep(i,1,n) scanf("%d",&lady[i].B);
rep(i,1,n) scanf("%d",&lady[i].L);
rep(i,1,n) scanf("%d",&lady[i].R);
sort(lady+1,lady+1+n,cmp); mp.clear();
int ans=0; mp[-oo]=oo;
mp[oo]=-oo;
rep2(i,n,1){
it=mp.upper_bound(lady[i].L);
if(it->second>lady[i].R){ //会自杀
++ans;
}
else{ //不会自杀
if(mp[lady[i].L]<lady[i].R){
mp[lady[i].L]=lady[i].R;
it=mp.lower_bound(lady[i].L);
--it; //不能丢,不然下面while没有用了,,
while(it->second<lady[i].R){
mp.erase(it--);
}
}
}
}
printf("%d\n",ans); return 0;
}
cf12D Ball(MAP,排序,贪心思想)的更多相关文章
- HDU 4857 逃生(反向建边的拓扑排序+贪心思想)
逃生 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- hdu 4105 贪心思想
淋漓尽致的贪心思想 波谷一定是一位数.波峰一位数不够大的时候加入到两位数就一定够大了的. 当在寻找波谷碰到零了就自然当成波谷. 当在寻找波峰时碰到零时,将前面的波谷加到前一个波峰上.让当前的零做波谷, ...
- CodeForces 1294B Collecting Packages(排序+贪心)
http://codeforces.com/contest/1294/problem/B 大致题意: 一张图上有n个包裹,给出他们的坐标,一个机器人从(0,0)出发,只能向右(R)或向上(U),问能否 ...
- 贪心思想之区间贪心 关联洛谷P1803
力扣上也有一道类似的题 几乎是一样 输出不同 → 力扣leetcode 435. 无重叠区间 区间贪心是比较经典的 就拿洛谷P1803来举例 题目大意 n个比赛 [开始时间,结束时间] 问一个人最多能 ...
- Java Map排序
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value). 1.按键排序 jdk内置的java.util包下的Tr ...
- C++ map排序(按照value值排序)_glp_hit_新浪博客
C++ map排序(按照value值排序)_glp_hit_新浪博客 C++ map排序(按照value值排序) (2012-07-12 14:19:51) 转载▼ 标签: ...
- 排序算法之选择排序的思想以及Java实现
1 基本思想 选择排序的思想是,每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. 2,算法的实现(Java) package Algorit ...
- Java编程之Map中分拣思想。
题目:给定一个字符串,求出字符串中每一个单词在字符串中出现的次数 旨意:map的分拣思想. 每一个key的包装类,存放出现的次数 /** * 作为包装类,用来存放英文单词,和该英文单词出现的次数 * ...
- NOIP2012BLOCKADE贪心思想证明
NOIP2012BLOCKADE贪心思想证明 这道题的做法是二分时间并检验这个时间是否可行.检验的方法要用到贪心思想. 对于不能到根结点的军队应该尽量向根结点走. 如果军队A能走到根结点但到根结点后剩 ...
- STL容器——对map排序
STL容器(三)——对map排序 对于map的排序问题,主要分为两部分:根据key排序:根据value排序.下面我们就分别说一下~ 1. 根据key进行排序 map默认按照key进行升序排序 ,和输入 ...
随机推荐
- KMP算法解决字符串匹配问题
要解决的问题 假设字符串str长度为N,字符串match长度为M,M <= N, 想确定str中是否有某个子串是等于match的.返回和match匹配的字符串的首字母在str的位置,如果不匹配, ...
- win8 连接到OneDrive时出现问题-感叹号
显示最后更新时间是1970年... 还有感叹号,没法同步 解决办法: 管理员运行cmd命令: 输入"netsh int ip reset c: esetlog.txt",按下回车键 ...
- jquery动态生成dom(比如append)导致js事件无效
如果无效用这个方法: on() 方法在被选元素及子元素上添加一个或多个事件处理程序. <div id="zkdiv"> <input type="bu ...
- whistle抓包-数据包分析
额,这篇忘了是来自哪位作者的了. whistle:1.14.6 这里以抓取浏览器数据包为例,分析抓取的数据. Method:Connect,对应Host:Tunnel to意思是因为网络环境受限,客户 ...
- 火爆全网的《鱿鱼游戏》,今天用 Python 分析一波影评
Hello,各位读者朋友们好啊,我是小张~ 这不国庆嘛,就把最近很火的一个韩剧<鱿鱼游戏>刷了下,这部剧整体剧情来说还是非常不错的,很值得一看, 作为一个技术博主,当然不能在这儿介绍这部剧 ...
- Idea生成JavaDoc文档
什么是JavaDoc javadoc是Sun公司提供的一个技术 它从程序源代码中抽取类.方法.成员等注释形成一个和源代码配套的API帮助文档 实现方式 命令行方式 javadoc -encoding ...
- 使用CEF(一)— 起步
使用CEF(一)- 起步 介绍 Chromium Embedded Framework (CEF)是个基于Google Chromium项目的开源Web browser控件,支持Windows, Li ...
- mysql中一半会选择什么样的字段为索引?(含索引创建删除查看公式)
一.数据量庞大的数据做索引 二.该字段经常出现在where的后面,以条件形式存在,经常被用户搜索的字段 三.很少被增删改的字段,因为增删改后,索引会重新排序 索引的创建 create index 索引 ...
- Apache Beam入门及Java SDK开发初体验
1 什么是Apache Beam Apache Beam是一个开源的统一的大数据编程模型,它本身并不提供执行引擎,而是支持各种平台如GCP Dataflow.Spark.Flink等.通过Apache ...
- C#开发BIMFACE系列52 CS客户端集成BIMFACE应用的技术方案
BIMFACE二次开发系列目录 [已更新最新开发文章,点击查看详细] 在我的博客<C#开发BIMFACE系列49 Web网页集成BIMFACE应用的技术方案>.<C#开发BI ...