B-名牌赌王(本人遇到的题,做个笔记)

题解:

#include <iostream>
#include <queue>			//需要用小根堆的优先队列
#include <unordered_map>		//用无序映射
using namespace std;
bool pai()				
{
	int n, m;
	cin >> n >> m;		
	priority_queue<int, vector<int>, greater<int>>q;		//用来往里面存牌
	unordered_map<int, int>arr;		//记录每张牌的个数
	while (n--)
	{
		int num;
		cin >> num;		//输入当前的牌
		arr[num]++;		//将当前牌的数量加1
		q.push(num);		//往优先队列里插入该牌
	}
	while (!q.empty())		//根据队列里面个数去循环(只要队列不为空就循环)
	{
		int number = q.top();		//将队列的堆顶元素(最小值)记录下来
		q.pop();			//必须得先弹出再去判断这个牌的数量
		if (arr[number] == 0)	continue;		//如果当前牌的个数为0,则开始下一次循环
		for (int i = 0; i < m; i++)			//根据每组顺子的长度去循环
		{
			int cnt = arr[number+i]--;		//用cnt记录当前牌的个数,记录后,就让当前牌个数-1,因为当前牌构成了顺子,且索引是number+i,因为只有连着的才能构成顺子
			if (cnt == 0)	return false;			//如果要构成顺子的该牌数量为0,则表示无法构成顺子,返回false
		}
	}
	return true;		//若能顺利构成若干组m长度的顺子,则返回true

}
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		if (pai())	cout << "YES" << endl;
		else cout << "NO" << endl;
	}
	
}

 参考(来自学长们题解):

 资料:

c++ unordered_map和map的区别-CSDN博客

C++ map与unordered_map区别及使用_c++中的map和unordered_map的区别和使用场景-CSDN博客

相关推荐

  1. 第十四届蓝桥杯c++组B笔记

    2024-04-02 17:40:04       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-02 17:40:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-02 17:40:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-02 17:40:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-02 17:40:04       20 阅读

热门阅读

  1. c语言实现循环位移的函数

    2024-04-02 17:40:04       15 阅读
  2. 深入了解Flutter中的Sealed Class及其使用

    2024-04-02 17:40:04       14 阅读
  3. linux脚本打包

    2024-04-02 17:40:04       12 阅读
  4. python系列教程220——哪种迭代最快

    2024-04-02 17:40:04       14 阅读
  5. 问答系统开发:基于深度学习的文本理解与生成

    2024-04-02 17:40:04       13 阅读
  6. 【leetcode面试经典150题】2.移除元素(C++)

    2024-04-02 17:40:04       10 阅读
  7. R语言提取站点的nc文件时间序列数据

    2024-04-02 17:40:04       13 阅读