zcmu-1977

1977: 黑暗意志

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 89  Solved: 46
[Submit][Status][Web Board]

Description

在数千年前潘达利亚从卡利姆多分离之时,迷雾笼罩着这块新形成的大陆,使它不被外来者发现。迷雾同样遮蔽着这片大陆古老邪恶的要塞——雷神的雷电王座。在雷神统治时期,他的要塞就是雷电之王力量的保障。即使在他死后,强大而堕落的能量仍然在此萦绕不绝;而复活的雷电之王和赞达拉巨魔企图再次驾驭那股能量,重建昔日帝国。这就是魔兽世界5.2版本的大型团队副本"雷电王座"
雷电王座中有一个神奇的BOSS是所有玩家都会记得的,直到现在当你的人物血量比BOSS血量都高的时候,在战斗的时候都要注意自己是不是会一不留神死在这个BOSS面前,它就是"黑暗意志"
黑暗意志的整场战斗围绕着一种神秘、旋转的液体——心能;它们是在这侧厅室内魔古实验的核心。这些重要的液体有固定的量并能激活魔像。当最初储藏它们的容器被摧毁后,逃逸出的液体会不断流向越来越大的构造体;直至它们的量聚集到一定程度后,便会激活所有魔像中最大的一个——黑暗意志。
击杀这个BOSS需要团队玩家一个人面向一个小魔像,在保证不击杀小魔像的情况下存活并且对BOSS进行输出,并且在需要时击杀小魔像以减轻治疗压力,提高对BOSS的输出
但是在炼狱难度下,玩家不但要保证不击杀小魔像,更要保证任意一个小魔像本身的血量,有另一个小魔像的血量与它相同,那么这两个小魔像之间便会形成一条连线(每个小魔像只能连接一条线),同时小魔像上会出现一个debuff(减少小魔像50%的输出),显然这个debuff在炼狱难度下的副本战斗中至关重要。
所以在炼狱难度开荒的时候,队长会给两个DPS差不多的玩家组队,让这两个玩家保证自己的小魔像与另一个人的小魔像血量相同,但是在团灭五次之后,团长终于发现,不是治疗不够,而是有两个玩家的DPS与之前的DPS有了差别,所以总是不能保证他们这一组的小魔像血量相同,但是这个时候,每对玩家彼此都有了默契,重新分组显然是不明智的,那么团长准备自己去帮助那两个玩家,保证他们的小魔像血量相同,但是团长需要知道,他们两个的小魔像血量是多少,才可以去攻击那个血量较多的小魔像,来保证这两个小魔像血量相同,从而击杀BOSS。
所以现在告诉你所有小魔像的血量,你能告诉团长,那两个玩家所对应的小魔像血量是多少吗?

 

Input

第一行一个整数T,代表数据的组数(1<=T<=10),接下来T组数据,每组数据的第一行是一个整数n(2<=n<=1000000,保证n是偶数),第二行是n个整数ai(0 <= ai <= 1000000000)代表血量,每两个整数之间有一个空格,(输入保证有且只有两个小魔像无法连线)

 

Output

对于每组数据,输出两个整数,分别代表两个小魔像的血量,中间有一个空格,并且血量较大的先输出。

 

 

Sample Input

2

6

2 2 1 1 3 4

4

1 1 3 4

Sample Output

4 3

4 3

题意:就是给n个数,求只出现一次的两个数是哪两个(一定只存在两个),输出时大的在前。

解析:

起先用set的find函数,发现erase的只去除键值,但是内存还是在。后面直接放弃。

直接求,排个序。情况多,细心点就可以写出来。

比如  1 1 2 3 3 4(不同的在中间和末尾)

         1 1 2 3 4 4(中间)

         1 2 3 3 4 4 (头)

         1 1 2 2 3 4(尾) 

         1 1 2 3 3 4 5 5(中间)

#include<bits/stdc++.h>
using namespace std;
  
int a[1000003];
int main()
{
    int t;scanf("%d",&t);
    while(t--)
    {
        int n;scanf("%d",&n);
        for(int i=0; i<n; i++)scanf("%d",&a[i]);
        sort(a,a+n);
        
        int cnt=0,x,y;
        for(int i=0; i<n-1; i++)
        {
            if(a[i]==a[i+1])
            {
                int c=i+2;
                i++;
                if(c==n-1)
                {
                    y=a[n-1];
                    break;
                }
                if(i>=n)break;
            }
            else if(a[i]!=a[i+1])
            {
                if(i==n-2)
                {
                    x=a[n-2],y=a[n-1];
                    break;
                }
                else if(cnt==0)
                {
                    x=a[i];
                    cnt++;
                }
                else if(cnt==1)
                {
                    y=a[i];
                    break;
                }
            }
        }
        printf("%d %d\n",y,x);
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值