C++面向对象程序设计 043:冷血格斗场 ---- (北大Mooc)
发布日期:2021-06-30 22:27:59 浏览次数:2 分类:技术文章

本文共 2320 字,大约阅读时间需要 7 分钟。

文章目录


专题博客链接


原题题目

在这里插入图片描述

在这里插入图片描述


代码实现(超时1000ms)

#include 
#include
#include
#include
#include
using namespace std;typedef multimap
mmii;int main(){ int members,id,attack,save1,save2,ret1,ret2; cin>>members; string func; mmii boxingmap; mmii::iterator p1,p2,temp; boxingmap.insert(make_pair(1000000000,1)); while(members--) { cin>>id>>attack; p1 = boxingmap.lower_bound(attack); p2 = boxingmap.upper_bound(attack); if(boxingmap.find(attack) == boxingmap.end()) { save2 = abs(p2->first-attack); save1 = (p1 != boxingmap.begin() ? abs((--p1)->first-attack) : INT_MAX); if(save2 <= save1) { for(temp=p2,ret2=temp->second;temp != boxingmap.end() && abs(temp->first-attack) == save2;temp++) { if(temp->second < ret2) ret2 = temp->second; } if(save2 == save1) { for(temp=p1,ret1=temp->second;p1!=boxingmap.begin() && abs(temp->first-attack) == save1;temp--) { if(temp->second < ret1) ret1 = temp->second; if(temp == boxingmap.begin())break; } } } for(temp=p1,ret1=temp->second;p1!=boxingmap.begin() && abs(temp->first-attack) == save1;temp--) { if(temp->second < ret1) ret1 = temp->second; if(temp == boxingmap.begin())break; } if(save2 < save1) ret1 = ret2; else if(save2 == save1) ret1 = (ret1
second;temp!=p2;temp++) { if(temp->second < ret1) ret1 = temp->second; } } cout<
<<' '<
<

提交结果

在这里插入图片描述


代码实现(954ms 简洁代码)

#include 
#include
#include
#include
using namespace std;typedef multimap
mmii;int main(){
mmii boxingmap; mmii::iterator p1,p2,ret; string func; int opernumbers,id,attack,temp1,temp2,tempname; cin>>opernumbers; boxingmap.insert(make_pair(1000000000,1)); while(opernumbers--) {
cin>>id>>attack; p1 = boxingmap.lower_bound(attack); if(p1 == boxingmap.begin()) ret = p1; else {
p2 = p1--; temp1 = abs(p1->first-attack),temp2 = abs(p2->first-attack); if(temp2 < temp1) ret = p2; else if(temp1 < temp2) ret = p1; else ret = (p1->second < p2->second ? p1:p2); } tempname = ret->second; cout<
<<' '<
<
first != attack) boxingmap.insert(make_pair(attack,id)); else ret->second = (id < tempname ? id : tempname); } return 0;}

提交结果

在这里插入图片描述

转载地址:https://love6.blog.csdn.net/article/details/115053152 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++面向对象程序设计 044:编程填空:数据库内的学生信息 ---- (北大Mooc)
下一篇:C++面向对象程序设计 042:热血格斗场 ---- (北大Mooc)

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月28日 11时22分28秒