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;
}