ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

B2 - Wonderful Coloring - 2

2021-08-05 23:03:16  阅读:235  来源: 互联网

标签:Coloring int ++ Wonderful mp B2 ans include size


题目:https://codeforces.com/contest/1551/problem/B2

题解:用map<int, vector<int> >mp;记录下标  。然后进行遍历,每个数一次性处理。

//#include <bits/stdc++.h>
#include <iostream>
#include <map>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long int ll;

int ans[200005];
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		map<int, vector<int> >mp;
		int n, k;
		int s = 0;
		cin >> n >> k;
		for (int i = 0; i < n; i++)
		{
			int t;
			cin >> t;
			mp[t].push_back(i);//下标标记
			if (mp[t].size() <= k)
			{
				s++;
			}
		}
		s /= k;//每种颜色涂几次
		int color = 1;
		int all = s * k;//可以涂的数
		int t = 0;//涂了几个
		for (auto it = mp.begin(); it != mp.end(); it++)
		{
			int size = it->second.size();
			int tu = min(size, k);

			for (int i = 0; i < tu; i++)
			{
				int tpos = it->second[i];//这个数的下标
				if (t >= all)
				{
					ans[tpos] = 0;
					break;
				}
				ans[tpos] = color;
				color %= k;
				color++;
				t++;
			}
			for (int i = tu; i < size; i++)
			{
				ans[it->second[i]] = 0;
			}
		}
		for (int i = 0; i < n; i++)
		{
			cout << ans[i] << " ";
		}
		cout << endl;
	}
}

标签:Coloring,int,++,Wonderful,mp,B2,ans,include,size
来源: https://blog.csdn.net/Wzwan_huai/article/details/119429323

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有