CDOJ1339 郭大侠与线上游戏

 2023-09-05 阅读 244 评论 0

摘要:附网址:http://acm.uestc.edu.cn/#/problem/show/1339 这道题,我觉得完全就是暴力打的吧,考虑了多种情况而已,大概这几种情况吧 1.N为奇数 插入/弹出的数在之前,那么中位数的pos--;反之,插入/弹出的数在之后,pos不变

附网址:http://acm.uestc.edu.cn/#/problem/show/1339


这道题,我觉得完全就是暴力打的吧,考虑了多种情况而已,大概这几种情况吧

 1.N为奇数   插入/弹出的数在之前,那么中位数的pos--;反之,插入/弹出的数在之后,pos不变。

 2.N为偶数   插入/弹出的数在之后,那么中位数的pos++;反之,插入/弹出的数在之后,pos不变;

 3.弹出时,若弹出中位数,如果N为偶数,pos++;反之N为奇数,pos--;


就这么几个注意的吧

下方代码


//by liucxy
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#include<queue>
#include<set>
using namespace std;queue<int>q;
set<int>sum;
int N;
set<int>::iterator it,tit;int main()
{scanf("%d",&N);while(N--){int x;scanf("%d",&x);if (x==1){int a;scanf("%d",&a);q.push(a);sum.insert(a);if (sum.size()==1) it=sum.begin();if (*it < a && sum.size()%2==0) it++;if (*it > a && sum.size()%2!=0) it--; }if (x==2){tit=sum.find(q.front());q.pop();if (*it < *tit && sum.size()%2==0) it--;if (*it > *tit && sum.size()%2!=0) it++;if (*it == *tit && sum.size()%2==0) it--;if (*it == *tit && sum.size()%2!=0) it++;sum.erase(tit);}if (x==3){if (sum.size()==1) it=sum.begin();printf("%d\n",*it);}}return 0;
}


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/1190.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息