冷血格斗场
Posted 王宜鸣
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冷血格斗场相关的知识,希望对你有一定的参考价值。
题意:
http://bjutacm.openjudge.cn/lianxi/s011/
思路:
使用stl中的map实现。map中保存每个会员的实力值和id组成的pair,对于每个新会员二分查找与之实力值最相近的老会员。
实力值相同的会员只需保存id最小的那个即可。
实现:
1 #include <iostream> 2 #include <cstdio> 3 #include <map> 4 #include <cmath> 5 using namespace std; 6 7 int n, id, d; 8 map<int, int> m; 9 10 int main() 11 { 12 m.insert(pair<int, int>(1000000000, 1)); 13 scanf("%d", &n); 14 for (int i = 0; i < n; i++) 15 { 16 scanf("%d %d", &id, &d); 17 map<int, int>::iterator it = m.lower_bound(d); 18 printf("%d ", id); 19 if (it == m.end()) 20 { 21 it--; 22 printf("%d\n", it->second); 23 } 24 else if (it == m.begin()) 25 { 26 printf("%d\n", it->second); 27 } 28 else 29 { 30 int tmp = abs(it->first - d); 31 int res = it->second; 32 it--; 33 int tmp2 = abs(it->first - d); 34 if (tmp2 < tmp || (tmp2 == tmp && it->second < res)) 35 { 36 res = it->second; 37 } 38 printf("%d\n", res); 39 } 40 if (!m.count(d) || m[d] > id) 41 { 42 m[d] = id; 43 } 44 } 45 return 0; 46 }
以上是关于冷血格斗场的主要内容,如果未能解决你的问题,请参考以下文章
美女主播张子萱Ruby-zhang邀您一起玩《生死格斗5无限》