cf-864A

题目链接:https://vjudge.net/problem/CodeForces-864A
题意:给你偶数个卡片,每个卡片有一个编号,两个人每个人选一个序号,选了这儿序号意味着,这个人要拿走所有该序号的卡片,如果所有的卡片都被拿走,并且两个人的卡片数量一样多,输出YES 和 两个序号 否则输出NO。
注意:要把所有的牌拿走(既然一人拿一次,那么拿的牌的数量肯定每种卡片的数量是总数的一半

#include<iostream>
#include<vector>
using namespace std;
int n;
int a[1005],b[1005];
int main()
{
    cin>>n;
    vector<int> m;
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
        b[a[i]]++;
    }
    bool f=true;
    for(int i=0;i<=100;i++)
    {
        if(b[i]!=0&&b[i]*2!=n)//注意b[i]*2!=n的使用
            f=false;
        if(b[i]>=1)
            m.push_back(i);
    }
    if(!f)
        cout<<"NO"<<endl;
    else
        cout<<"YES"<<endl<<m[0]<<" "<<m[1]<<" "<<endl;
    return 0;
}

vector m是定义了一个vector容器,元素类型为vector,
初始化为包含m个vector对象,每个对象都是
一个新创立的vector对象的拷贝,而这个新
创立的vector对象被初始化为包含n个0。
因此vector(n)表示构造一个无名且含n
个0的vector对象。从结果上看,类似于创建了
一个m×n的二维数组,而且可以通过
v[i][j]的方式来访问元素(vector支持下标访问元素)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值