SOJ4389 川大贴吧水王 队列

描述

_L的室友HZ喜欢在川大贴吧上发帖,据传说,HZ在川大贴吧上发的贴子数已经超过了该贴吧贴子总数的一半,被江湖人封为川大贴吧水王,你能帮_L迅速找出这位川大贴吧水王HZ的ID吗?

已知川大贴吧贴子总数为n,给出n个贴子作者的ID,求HZ的ID。

Input

输入文件包含多组测试数据。第一行为测试的数据组数T(T<=40)。
接下有T组数据,第一行输入贴子总数n(1<=n<=10000000),接下来的一行有n个正整数,分别为每位贴子作者的ID号(该ID号为不超过10^9的正整数)

Output

输出T行,每行为该组测试数据的川大贴吧水王HZ的ID。

Example Input

2
3
1 2 2
5
1 2 3 3 3

Example Output

2
3

(原题戳我)

思路:

本题的题目类型很像《编程之美》那本书中的找水王的题目,最朴素的方法是将所有帖子的ID之后排序,找出中位数,但是由于本题数据规模太大,所以如果这么做的话会超时,于是可以利用队列来解题。每次读入一个数就把他和队列中现存的数进行比对,如果一样就放进队列中,不然就把队列最前面的数删除。因为水王的帖子总数过半,所以无论怎么样都可以保证最后留下的是水王的ID,等读取完毕后,取出队列中的首元素即可。

AC代码:

#include <stdio.h>
#include <queue>
#include <algorithm>
#include <iostream>
using namespace std;

queue<int> que;

int main(){
    int T;
    scanf("%d",&T);
    while(T--){
        while(que.size()){
            que.pop();
        }
        int n;
        scanf("%d",&n);
        int temp;
        for(int i=0;i<n;i++){
            scanf("%d",&temp);
            if(que.empty()){
                que.push(temp);
            }else if(que.front()==temp){
                que.push(temp);
            }else {
                que.pop();
            }
        }
        int res=que.front();
        printf("%d\n",res);
    }
    return 0;
} 
时间: 2024-10-07 19:35:38

SOJ4389 川大贴吧水王 队列的相关文章

SOJ--4389: 川大贴吧水王

描述 _L的室友HZ喜欢在川大贴吧上发帖,据传说,HZ在川大贴吧上发的贴子数已经超过了该贴吧贴子总数的一半,被江湖人封为川大贴吧水王,你能帮_L迅速找出这位川大贴吧水王HZ的ID吗? 已知川大贴吧贴子总数为n,给出n个贴子作者的ID,求HZ的ID. Input 输入文件包含多组测试数据.第一行为测试的数据组数T(T<=40). 接下有T组数据,第一行输入贴子总数n(1<=n<=10000000),接下来的一行有n个正整数,分别为每位贴子作者的ID号(该ID号为不超过10^9的正整数) O

川大/电子科大校赛

第一次出校比赛 比赛时间: 电子科技大学校赛:2015.4.4 周六 四川大学校赛:2015.4.6 周一 之前本以为可以愉快地正大光明地不上课出去玩玩,不过后来才发现正值清明节,好像亏了,并不能好好滴玩耍,不过少上了4节课也是不错的,哈哈. 4.3 上午11点从学校出发,坐27路公交到圣水寺转车,然而发现时间并不多了,于是打车赶到火车站,无奈排队取票和进站的人都多得不行,看来之前小框框建议早点走是极为明智的,毕竟假期,无形甩锅....好不容易取到票出来但是进站的队伍又好长好长,只有10分钟点车

15年电科邀请赛和川大邀请赛总结

刚打完川大邀请赛回来,这次打得非常糟糕,两场爆零,虽然对心情略有影响,不过如今的我早已能轻松承受这种失败,正如周杰伦在<三年二班>里唱的,“没关系,再继续努力”.我觉得这两场比赛对我的意义不是拿个好名次让简历上好看点,虽然我之前是这么想的,但是现在我才发现,它们的真正意义在于让我知道是否走偏了路,在离区域赛还有半年时间的时候给我提个醒,或者说让我知道自己错的有多离谱,悬崖勒马. 原本我的训练计划是玩命刷专题,但是两场比赛让我体会最强烈的地方就是感觉自己所学的自己所训练的完全没用上,似乎玩的不是

浙大&amp;川大提出脉冲版ResNet:继承ResNet优势,实现当前最佳

浙大&川大提出脉冲版ResNet:继承ResNet优势,实现当前最佳 选自arXiv,作者:Yangfan Hu等,机器之心编译. 脉冲神经网络(SNN)具有生物学上的合理性,并且其计算潜能和传统神经网络相同,主要障碍在于训练难度.为解决这个问题,浙江大学和四川大学近日提出了脉冲版的深度残差网络 Spiking ResNet.为解决模型转换的问题,研究者提出了一种新机制,对连续值的激活函数进行标准化,以匹配脉冲神经网络中的脉冲激发频率,并设法减少离散化带来的误差.在多个基准数据集上的实验结果表明

川大邀请赛

4423:Necklace 一道计数问题,当时不会敲,先留着 4424:Permutations 签到题 1 /***Good Luck***/ 2 #define _CRT_SECURE_NO_WARNINGS 3 #include <iostream> 4 #include <cstdio> 5 #include <cstdlib> 6 #include <cstring> 7 #include <string> 8 #include <

数据结构之循环队列c语言实现

    队列是一种先入先出的结构,数据从队列头出,队尾进.在linux内核中进程调度,打印缓冲区都有用到队列.     队列有多种实现方式,可以用链表,也可以用数组.这里用数组来实现一个简单的循环队列.首先创建一个大小为8的队列如下,队列头尾指针指向同一块内存,          当从队列尾部插入一个数据后变成下面的情形,为了便于处理,这里始终会浪费一个空间 继续插入数据,直到出现以下情形,表示队列满了, 接下来看一下出队的情形,从队列头出队3个元素, 再添加三个元素后队列又变成满的了, 在上面

记大一大二经历以及教训

2017  5.10   我目前就读川大本科大二,第一篇文章,纯属个人的大学生活感想.   大一青涩,现在想来可以用无知形容,没找到笃定前行的方向,然而厌恶了现在的专业--风景园林.以下吐槽.此专业在我川真的是巨水,本身国内没多少开这个专业的,2012教育部学科评估排名倒数,在一个985院校里面的专业连个普通一本都比不上,可想而知教学质量和教学环境.何况这个专业挂名工科,实则是搞艺术的,数学物理一概不学,和工科不沾边,要我觉得不喜欢设计千万不要选这种专业,身边动辄就从小开始画画,素描水彩不在话下

STL栈、队列、优先队列—————基础知识

0基本特点:后进先出(LIFO) 注意: 不一定最先进栈的最后出栈,只要保证是栈顶元素出栈就行! 当栈中存在一个元素时,top=0,因此通常把空栈的判定条件定为top= - 1: STL 中栈的使用方法: 头文件:#include <stack> 基本操作: push(x) 将x加入栈中,即入栈操作 pop() 出栈操作(删除栈顶),只是出栈,没有返回值 top() 返回第一个元素(栈顶元素) size() 返回栈中的元素个数 empty() 当栈为空时,返回 true STL 中队列的使用(

JAVA线程池ThreadPoolExecutor与阻塞队列BlockingQueue .

从Java5开始,Java提供了自己的线程池.每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池.以下是我的学习过程. 首先是构造函数签名如下: [java] view plain copy print ? public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<