Codeforces Round #634 (Div. 3)--题解(ABC)

A. Candies and Two Sisters

题目
传送门

解析
签到题,注意n的奇偶即可,直接贴代码

#include<iostream>
using namespace std;
int main()
{
	int t;
	long long n;
	int ans;
	cin >> t;
	while (t--)
	{
		cin >> n;
		if (n%2 == 0)//偶数
			ans = n / 2 - 1;
		else //奇数
			ans = n / 2;
		cout << ans << endl;
	}
	return 0;
}

B.Construct the String

题目
传送门

做题时,左思右想,被a干扰了没什么思路,后来灵光一闪,根本就不用考虑a,直接构造b个不同字母就好了

手工模拟

7 5 3
abcabca

6 1 1
aaaaaa

6 6 1
aaaaaa

5 2 2
ababa

不用想太复杂了,a就是用来干扰思路的

代码如下

#include<iostream>
using namespace std;
int main()
{
	int t;
	cin >> t;
	while (t--)
	{
		int a, b, n;
		cin >> n >> a >> b;
		for (int i = 0; i < n; i++)
			cout << char(i % b + 'a');
		cout << endl;
	}
	return 0;
}

C. Two Teams Composing、

题目
传送门

题意:
给你一个序列a,然后你可以将里面的元素进行分组,第一组的元素全部都要不同的,第二组全部都要相同,最后两组的数量要一样,问最大的数量是多少。

应该找到重复的数字的最大值,和不同数字的种数,相比较,输出小的

#include<iostream>
#include<algorithm>
using namespace std;
const int N = 2e5 + 10;
int t, n, a[N];
int main()
{
   cin>>t;
    while (t--)
    {
        cin >> n;
        memset(a, 0, sizeof(a));
        int k = 0, maxi = 0;
        for (int i = 1; i <= n; i++)
        {
            int x;
            cin>>x;
            if (!a[x]) k++;//种数
            a[x]++;//重复数
            maxi = max(maxi, a[x]);
        }
        if (maxi == k)
            cout << maxi - 1 << endl;
        else
            cout << min(maxi, k) << endl;
    }
    return 0;
}
发布了50 篇原创文章 · 获赞 63 · 访问量 6213

猜你喜欢

转载自blog.csdn.net/SDAU_LGX/article/details/105506704