hdu 4585 Shaolin 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
来源:互联网 发布:诺基亚6120c软件 编辑:程序博客网 时间:2024/05/01 18:28
题意大意:很多人想进少林寺,少林寺最开始只有一个和尚,每个人有有一个武力值,若这个人想进少林,必须和比他先进去的人比武并且武力值最接近他的比武,如果有相同的则选择武力值比他小的,问当他进去的时候要和哪个和尚比武。
思路:正常情况暴力,n=100000
n*n的操作肯定不行的,最少要优化到nlogn,联想到map,map里的数会自动排序,它是由红黑树实现的,能实现O(n)的排序(对第一关键字排序),
然后再由mp.lower_bound(val)实现logn的查找。
总算法复杂度 n*logn
lower_bound()总结:
当参数 key 没有在容器 key的范围内:
1. 小于容器key uper_bound, lower_bound 都将返回 begin.
2. 大于容器key uper_bound, lower_bound 都将返回 end(注意end已经超界了)
当参数key 在容器key 范围内:
1. 参数 key == 容器key. lower_bound 将返回当前key 的iterator, uper_bound 将返回下一个元素的iterator.
2. 参数 key 不等于容器key,且在范围内, lower_bound将返回比参数key 大的且相邻的容器key的iterator
3 如果 Key等于 begin 或等于 end,将返回begin 或end
还有这题如果用cin和cout会超时。。。
#include <iostream>#include <algorithm>#include <cstdio>#include <map>#include <algorithm>using namespace std;int main(){ int n; while(scanf("%d",&n)!= EOF && n) { map<int,int> mp; mp[1e9] = 1; while(n--) { int k,g; scanf("%d%d",&k,&g); map<int,int>::iterator i = mp.lower_bound(g); if(i == mp.begin()) printf("%d %d\n",k,i->second); else { map<int,int>::iterator a = i, b= --i; if((a->first - g) >= (g -b->first) ) { printf("%d %d\n",k,b->second); } else printf("%d %d\n",k,a->second); } mp[g] = k; } } return 0;}
0 0
- hdu 4585 Shaolin 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- hdu 4585 Shaolin 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- hdu 4576 robot 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现-1001-robot
- 2013ACM-ICPC杭州赛区全国邀请赛(题目重现)
- 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- hdu 4584 building-bridge 暴力的题,怎么暴力怎么干。。2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- 2013ACM-ICPC杭州赛区全国邀请赛 ——Robot
- 2013 ACM-ICPC南京赛区全国邀请赛——题目重现
- hdu 4578 Transformation 2013ACM-ICPC杭州赛区全国邀请赛
- HDU_2013 ACM-ICPC南京赛区全国邀请赛——题目重现
- 2013ACM-ICPC杭州赛区全国邀请赛——X-Boxes
- 2013ACM-ICPC杭州赛区全国邀请赛——Random Walk
- hdu4576 Robot 2013 ACM-ICPC杭州赛区全国邀请赛 1
- hdu 4497 GCD and LCM(2013 ACM-ICPC吉林通化全国邀请赛——题目重现)
- 2013 ACM-ICPC吉林通化全国邀请赛——题目重现
- HDU 4569 Special equations(思维)——2013 ACM-ICPC长沙赛区全国邀请赛
- hdu4577 X-Boxes ACM-ICPC杭州赛区全国邀请赛 2
- 2013 ACM-ICPC南京赛区全国邀请赛
- 古老的YUV视频呈现详解 及 RGB转换
- spoj 375
- Maximum Depth of Binary Tree
- Linux 管理常用命令
- HDU 5040
- hdu 4585 Shaolin 2013 ACM-ICPC杭州赛区全国邀请赛——题目重现
- cocos2d::Vector最佳用法
- 卸载虚拟机后无法上网但能上QQ
- MFC 扩展DLL中使用STL 问题
- visual svnserver 安装失败(服务启动失败)解决方法
- leetcode - Populating Next Right Pointers in Each Node II
- repo使用
- android_定义多个Activity及跳转
- 下载最新的spring框架