首页 > 其他分享 >Codeforces Round #710 (Div. 3) D. Epic Transformation(优先队列)

Codeforces Round #710 (Div. 3) D. Epic Transformation(优先队列)

时间:2022-08-24 18:15:05浏览次数:100  
标签:pq 队列 auto LL Codeforces 710 -- 数组 Round

https://codeforces.com/contest/1506/problem/D

鉴定完毕,这题卡映射数量到优先队列的那一步操作

给你一个由整数组成的长度为n的数组a。您可以对阵列应用由几个步骤组成的以下操作零次或多次:

你在数组ai和aj中选择两个不同的数;
从数组中移除第I个和第j个元素。
在对数组应用一些操作序列后,数组的最小可以是多少?
input
5
6
1 6 1 1 4 4
2
1 2
2
1 1
5
4 5 4 5 4
6
2 3 2 1 3 1
output
0
0
2
1
0
  • 简而言之,题目意思就是想让我们两两不同的数字一起删除,可以操作任意次,问我们能留下的最小数量是多少?

  • 之前做过一个类似的题目,可惜卡常了,呜呜呜呜,但是大体还是一致的,都是使用优先队列进行删除匹配

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
const LL N=200200,M=2002;
LL a[N];
int main()
{
    cin.tie(0); cout.tie(0); ios::sync_with_stdio(false);
    LL T=1;
    cin>>T;
    while(T--)
    {
        LL n;
        cin>>n;
        map<LL,LL> mp;
        for(LL i=1;i<=n;i++)
        {
            cin>>a[i];
            mp[a[i]]++;
        }
        priority_queue<int> pq;
        for(auto i:mp)
        {
            //插入的是不同的数字的个数
            pq.push(i.second);
        }
        while(pq.size()>=2)
        {
            auto x=pq.top();
            pq.pop();
            auto y=pq.top();
            pq.pop();
            x--;
            y--;
            if(x>0) pq.push(x);
            if(y>0) pq.push(y);
        }
        if(pq.size()==0) cout<<"0"<<endl;
        else cout<<pq.top()<<endl;

        mp.clear();
        while(!pq.empty()) pq.pop();
    }
    return 0;
}

标签:pq,队列,auto,LL,Codeforces,710,--,数组,Round
From: https://www.cnblogs.com/Vivian-0918/p/16621117.html

相关文章

  • Codeforces Round #773 (Div. 2)
    CodeforcesRound#773(Div.2)VPABC24min31min48min+2+1A\(\color{Gray}{800}\)CF1642AHardWay观察题目样例外加手摸可知,只有满足三角形......
  • Codeforces Round #815 (Div. 2) E. Misha and Paintings
    人生中第一个AC的codeforces题,大概太难了,光是看答案就看了整整一下午,最后还是在b站上搜到讲解视频才明白的。俺们阿B真的是太厉害啦这道题首先容易看出当矩阵中数字个数......
  • 710. 黑名单中的随机数
     labuladong题解思路难度困难210收藏分享切换为英文接收动态反馈给定一个整数 n 和一个 无重复 黑名单整数数组 blacklist 。设计一种算法,从 [0,n-1]......
  • Codeforces Round #783 (Div. 2) E (证明+构造)
    一般这种题我们都是先推导下界再来构造那我们假设我们当前放置了k位半皇后我们只考虑横竖被吃掉并且贪心的(类似于八皇后的选择)横竖都不重叠我们把他固定在左上角的kk......
  • Codeforces Round #292 (Div. 2) C. Drazil and Factorial(思维)
    https://codeforces.com/contest/515题目大意:给我们一个长度为n的数字a定义F(a)=a里面每一位数的阶层总乘积让我们求最大的x,需要满足F(x)=f(a)并且x中没有0和1input4......
  • Codeforces Round #638 (Div. 2) B. Phoenix and Beauty(构造/思维)
    https://codeforces.com/contest/1348/problem/B如果一个数组的所有长度为k的子数组的和相同,那么这个数组就是美丽的。数组的子数组是任何连续元素的序列。Phoenix目前......
  • *Codeforces Round #363 (Div. 1) A. Vacations(状态机)
    https://codeforces.com/contest/698/problem/AVasya有n天假期!Vasya知道关于这n天中每一天的以下信息:那家健身房是否开门,以及那天是否在互联网中进行了比赛。第i天有四个......
  • CodeForces-1715D 2+ doors
    2+doors贪心位与位之间互不一向,因此考虑每个位进行考虑就行因为是或的关系,先考虑\(0\)的情况,如果出现\(0\),则两个数字的该位必然是\(0\)如果是\(1\)的情况,就考......
  • CodeForces-1715C Monoblock
    Monoblockdp先想想如何计算初始值\(dp[x]\)表示以第\(x\)个位置为\(r\),他的所有贡献状态转移:如果\(a_x=a_{x-1}\):\(dp[x]=dp[x-1]+1\),代表只增加了\(l......
  • CodeForces-1719D Burenka and Traditions
    BurenkaandTraditions贪心由于代价是向上取整的,因此可以直接考虑成两种方式:选择两个相邻的数,让他们同时异或上一个值选择一个数字,让他变成\(0\)由此可见,最多......