062:热血格斗场​​​​​​​

总时间限制:         1000ms                                内存限制:         65536kB

描述:

为了迎接08年的奥运会,让大家更加了解各种格斗运动,facer新开了一家热血格斗场。格斗场实行会员制,但是新来的会员不需要交入会费,而只要同一名老会员打一场表演赛,证明自己的实力。

我们假设格斗的实力可以用一个正整数表示,成为实力值。另外,每个人都有一个唯一的id,也是一个正整数。为了使得比赛更好看,每一个新队员都会选择与他实力最为接近的人比赛,即比赛双方的实力值之差的绝对值越小越好,如果有两个人的实力值与他差别相同,则他会选择比他弱的那个(显然,虐人必被虐好)。

不幸的是,Facer一不小心把比赛记录弄丢了,但是他还保留着会员的注册记录。现在请你帮facer恢复比赛纪录,按照时间顺序依次输出每场比赛双方的id。

输入:

第一行一个数n(0 < n <=100000),表示格斗场新来的会员数(不包括facer)。以后n行每一行两个数,按照入会的时间给出会员的id和实力值。一开始,facer就算是会员,id为1,实力值1000000000。输入保证两人的实力值不同。

输出:

N行,每行两个数,为每场比赛双方的id,新手的id写在前面。

样例输入:

3
2 1
3 3
4 2

样例输出:

2 1
3 2
4 2

Time Limit Exceeded代码:

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
struct Peo{int id;int force;
};
struct Rule{bool operator()(const Peo & p1, const Peo & p2)const {return p1.force > p2.force;}
};
int main(){multiset<Peo, Rule> st;multiset<Peo, Rule>::iterator p, a, b;Peo peo;peo.id = 1;peo.force = 1000000000;st.insert(peo);int n, x, y;cin >> n;for(int i = 1; i <= n; ++i){cin >> peo.id >> peo.force;st.insert(peo);for(p = st.begin(); p != st.end(); ++p)if(p->force == peo.force)break;a = p;b = p;a--;b++;if(b == st.end())cout << p->id << ' ' << a->id << endl;else{x = a->force - peo.force;y = peo.force - b->force;if(y <= x)cout << p->id << ' ' << b->id << endl;elsecout << p->id << ' ' << a->id << endl;}}return 0;
}

超时原因:中间的查找直接遍历了。

Accepted代码:

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
struct Peo{int id;int force;
};
struct Rule{bool operator()(const Peo & p1, const Peo & p2)const {return p1.force > p2.force;}
};
int main(){multiset<Peo, Rule> st;multiset<Peo, Rule>::iterator p, a, b;Peo peo;peo.id = 1;peo.force = 1000000000;st.insert(peo);int n, x, y;cin >> n;for(int i = 1; i <= n; ++i){cin >> peo.id >> peo.force;st.insert(peo);p = st.lower_bound(peo);//二分查找下限a = p;b = p;a--;b++;if(b == st.end())cout << p->id << ' ' << a->id << endl;else{x = a->force - peo.force;y = peo.force - b->force;if(y <= x)cout << p->id << ' ' << b->id << endl;elsecout << p->id << ' ' << a->id << endl;}}return 0;
}

改良地方:将上面的遍历查找改为了直接用lower_bound二分查找下线。

063:冷血格斗场

总时间限制:         1000ms                                内存限制:         65536kB

描述:

为了迎接08年的奥运会,让大家更加了解各种格斗运动,facer新开了一家冷血格斗场。格斗场实行会员制,但是新来的会员不需要交入会费,而只要同一名老会员打一场表演赛,证明自己的实力。

我们假设格斗的实力可以用一个非负整数表示,称为实力值,两人的实力值可以相同。另外,每个人都有一个唯一的id,也是一个正整数。为了使得比赛更好看,每一个新队员都会选择与他实力最为接近的人比赛,即比赛双方的实力值之差的绝对值越小越好,如果有多个人的实力值与他差别相同,则他会选择id最小的那个。

不幸的是,Facer一不小心把比赛记录弄丢了,但是他还保留着会员的注册记录。现在请你帮facer恢复比赛纪录,按照时间顺序依次输出每场比赛双方的id。

输入:

第一行一个数n(0 < n <=100000),表示格斗场新来的会员数(不包括facer)。以后n行每一行两个数,按照入会的时间给出会员的id和实力值。一开始,facer就算是会员,id为1,实力值1000000000。

输出:

N行,每行两个数,为每场比赛双方的id,新手的id写在前面。

样例输入:

3
2 3
3 1
4 2

样例输出:

2 1
3 2
4 2

Time Limit Exceeded代码:

#include <iostream>
#include <set>
#include <algorithm>
using namespace std;
struct Peo{int id;int f;
};
struct Rule{bool operator()(const Peo & p1, const Peo & p2) const {if(p1.f == p2.f)return p1.id > p2.id;elsereturn p1.f > p2.f;}
};
typedef multiset<Peo, Rule> ST;
int main(){ST st;Peo p;ST::iterator q, a, b, a1, b1;p.id = 1;p.f = 1000000000;st.insert(p);int n, x, y;cin >> n;for(int i = 1; i <= n; ++i){cin >> p.id >> p.f;st.insert(p);q = st.lower_bound(p);a = q;b = q;a--;b++;if(b == st.end()){//p是最菜的 cout << q->id << ' ' << a->id << endl;}else{//还有人比p菜 x = a->f - q->f;y = q->f - b->f;if(x < y)cout << q->id << ' ' << a->id << endl;else if(y < x){b1 = b;while(b1->f == b->f && b != st.end())b1++;b1--;cout << q->id << ' ' << b1->id << endl;}else{//a->f == q->f == b->f || x == yb1 = b;while(b1->f == b->f && b != st.end())b1++;b1--;if(a->id < b1->id)cout << q->id << ' ' << a->id << endl;elsecout << q->id << ' ' << b1->id << endl;}}}return 0;
}

这边用的是multiset,如果有大佬的话可以帮我改进改进。

Accepted代码:

#include <iostream>
#include <map>
#include <algorithm>
#include <cmath>
using namespace std;
typedef map<int, int> MP;
int main(){MP mp;MP::iterator i, j;mp[1000000000] = 1;int n, id, power, x, y;cin >> n;while(n--){cin >> id >> power;i = mp.lower_bound(power);if(i == mp.end()){//没人比他还厉害 i--;cout << id << ' ' << i->second << endl;mp[power] = id;}else{if(i->first == power){cout << id << ' ' << i->second << endl;if(id < i->second)mp[power] = id;}else{if(i != mp.begin()){j = i;j--;}else{j = i;}x = abs(power - j->first);y = abs(i->first - power);if(x > y){cout << id << ' ' << i->second << endl;}else if(y > x){cout << id << ' ' << j->second << endl;}else{//x == yif(j->second > i->second)cout << id << ' ' << i->second << endl;elsecout << id << ' ' << j->second << endl;}mp[power] = id;}}}return 0;
}

冰火两重天版格斗场(热血格斗场+冷血格斗场)相关推荐

  1. 绿色计算 IT厂商与客户供需为何冰火两重天

    正当全球IT厂商热炒绿色计算概念之时,媒体对国内116位分布于制造.电信.IT服务.金融等行业的首席信息官(CIO)进行的2008年绿色计算应用调查显示,大量用户尤其是传统制造.化工.能源等行业用户对 ...

  2. 外资零售的冰火两重天:阴面上演撤退潮,阳面上演新店开疆拓土

    "当时代抛弃你时,连一声再见都不会说"张泉灵的这句演讲言依旧回荡在耳畔. 开放几十年来,国内市场上迎来了不少备受消费者青睐的外资零售商,但在跌宕起伏的市场浪潮中,他们却有着不同的结 ...

  3. 科大讯飞同时公布年报和一季度报,冰火两重天

    文|陈曦 来源 | 螳螂财经(ID:TanglangFin) 近期,科大讯飞同时公布了2019年年报和2020年一季度报. 这两份财报可以说是冰火两重天. 在2019年财报中,科大讯飞营收突破了100 ...

  4. 复盘港股2021:新股上市热潮不减,市场重现“冰火两重天”

    即将过去的2021年,对于人们而言,是不平凡的一年,对于股市亦不平静. 不少基金机构及投资机构表示,大宗商品价格暴涨.互联网新经济迎来规范管理.新冠疫情又数度打乱全球供应链等因素,将影响全球经济出现短 ...

  5. JAvA傲剑狂刀冰火两重天攻略,《傲剑狂刀-冰火两重天》三大系统攻略

    对于已经上线一段老板厨电时间的<傲剑狂刀-冰无线路由器wifi穿墙火两重天>,想必各位无线路由器wifi穿墙亲已经体验过了,那么无线路由器怎么加密傲剑狂刀-冰火两重天[url=http:/ ...

  6. 估值冰火两重天 互联网金融巨头“天价”冲刺上市

    多家互联网金融机构的估值浮出水面.风投机构人士认为,互联网金融发展格局初定,大平台的估值在数百亿元至数千亿元之间,规模巨大.较早发展起来的单一业务平台如网贷类平台的前景不被投资机构看好,估值缩水甚至机 ...

  7. 项目管理手记(29)ERP项目高层大力支持的冰火两重天

    一.背景: ERP项目的实施离不开公司一把手的支持,这个说法不新鲜了.但即便是得到公司高层的大力支持,我们还得看看这是什么样的支持.高层支持到位了,支持对头了,项目才能顺利推行下去:如果高层支持的劲道 ...

  8. 窝囊少爷 第二章 冰火两重天

    "妖丹,最少要四阶妖兽才会有妖丹."陆少游从脑海中的记忆之中得知,这妖丹,最少是要到了四阶妖兽才会有的,三阶妖兽以下,不会有妖丹出现,这妖丹,好像是特别值钱. "嘎嘎-- ...

  9. 煤电再现冰火两重天 近九成电企业绩不佳

    在刚刚过去的春节,对于煤企和电企来说,可以说是悲喜两重天.煤企因为数钱数到手软欢欢喜喜过大年,但电企却由于日子不好过,这个年也过得悲悲戚戚. 根据数据统计,近九成电企由于煤价大涨,预计2017年亏损或 ...

最新文章

  1. 从零开始学ASP.NET
  2. oracle 11g数据库以管理员身份登录不上
  3. 大唐发电厂计算机考试题,全国计算机等级考试上机考试与题库解析:一级B
  4. 智能会议系统(8)---流媒体中用到的几个协议简介
  5. 微软宣布已获批:重新向华为出口软件!
  6. 临近失业,如何拯救自己?
  7. tp3.2 自动加载
  8. Layer表格汇总(所有)数据根据配置动态显示
  9. Delphi 10.3.3 安装DevExpress VCL 19 教程
  10. 【】论晚睡晚起的危害
  11. 2020前端开发面试题总结(最新)
  12. DOS命令关机小程序
  13. matlab矩阵四分位数,中位数,四分位数
  14. 女生也玩橄榄球?而且还有世界杯?!
  15. matlab从无到有系列(五):基本图形图像处理功能
  16. 哪个安卓模拟器比较好用 2023年好用的安卓模拟器推荐
  17. 一、Windows系统下安装Tensorflow2.x(2.6)
  18. python解椭圆方程的例题_《椭圆》方程典型例题20例(含标准答案)
  19. 一、浙江专升本高等数学考点-函数
  20. 955.WLB 红包封面来啦!送给希望不加班的你~

热门文章

  1. 03数据库编程(mysql)19、查询没学过“admin“老师授课的同学的信息
  2. OSI参考模型层次结构
  3. 妇女节 | 卓然而立,绽放光芒!
  4. 快手直播电商2.0时代:从「货」到「人」,重构商品交易逻辑
  5. matlab2014 整数规划,整数规划模型的Matlab程序实现
  6. 解决linux服务器中tomcat无法创建目录的问题
  7. [YOLO] yolov3、yolov4、yolov5改进汇总
  8. SELECT语句总结!全!
  9. 一个废物大学生的学习日常day1(10月23日)(折线图与地图的绘制
  10. 荣耀30S和荣耀X10的区别 哪个好