Codeforce 1335C - Two Teams Composing 统计技能种类数量+统计同一技能最大数量
7
4 2 4 1 4 3 4
统计技能种类数量 4种不同技能
统计同一技能最大数量 技能1(数量1) 技能2(数量1) 技能3(数量1) 技能4(数量4)
选出 技能4(数量4) 作为 第2组
扣除技能4,还有4-1=3种不同技能 作为 第1组
发现,第2组数量4,第1组数量3
输出结果为3
5
2 1 5 4 3
统计技能种类数量 5种不同技能
统计同一技能最大数量 技能1(数量1) 技能2(数量1) 技能3(数量1) 技能4(数量1) 技能5(数量1)
选出 技能1(数量1) 作为 第2组
扣除技能1,还有5-1=4种不同技能 作为 第1组
发现,第2组数量1,第1组数量4
输出结果为1
1
1
统计技能种类数量 1种不同技能
统计同一技能最大数量 技能1(数量1)
选出 技能1(数量1) 作为 第2组
扣除技能1,还有1-1=0种不同技能 作为 第1组
发现,第2组数量1,第1组数量0
输出结果为0
4
1 1 1 3
统计技能种类数量 2种不同技能
统计同一技能最大数量 技能1(数量3)
选出 技能1(数量3) 作为 第2组
扣除技能1,还有2-1=1种不同技能 作为 第1组
发现,第2组数量3,第1组数量1
此时,可让第2组数量3,匀出1个数量给第1组
更新后的数据,第2组数量2,第1组数量2
输出结果为2
#include<bits/stdc++.h>
using namespace std;
#define IOS ios::sync_with_stdio(false);cin.tie(0);
const int maxx = 2e5 + 10;
int vis[maxx], a[maxx], n;
int main() {
//freopen("in.txt", "r", stdin);
IOS;
int T; cin >> T;
while (T--) {
cin >> n;
memset(vis, 0, sizeof(vis));
for (int i = 1; i <= n; ++i)cin >> a[i], vis[a[i]]++;
int Max = 0, Min = 0;
for (int i = 1; i <= n; ++i) {
Max = max(Max, vis[i]);
if (vis[i] != 0) Min++;
}
Min -= 1;
int ans = min(Min, Max);
if (ans <= Max - 2)ans++;//如果Max 比 ans 大于2 说明还能再加一
cout << ans << endl;
}
return 0;
}
分类:
刷题笔记: CF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 全程不用写代码,我用AI程序员写了一个飞机大战