C. Doremy‘s City Construction(二分图问题)

思路:把集合划分成两部分,一部分中每个数都比另一部分小,这两部分连成一个完全二分图,这种情况是最优的,还需要特判所有数都相等的情况.

代码:

cpp 复制代码
void solve(){
    int n;
    cin >> n;
    vector<int>a(n + 1);
    for(int i = 1;i <= n;i ++)
        cin >> a[i];
    sort(a.begin(),a.end());
    if(a[1] == a[n]){
        cout << n/2 << endl;
        return;
    }
    int ans =0;
    for(int i = 1;i <= n;i ++){
        int j = i;
        while(j + 1 <= n && a[j + 1] == a[i])j ++;
        ans = max(ans ,j * (n - j));
        i = j;
    }
    cout << ans << endl;
}
相关推荐
Lxx_Zw2 分钟前
先把轮子转稳,才不会烧心:编码器速度环 PID 怎么接回 PWM
c语言·stm32·单片机·嵌入式硬件
头像很酷12 分钟前
嵌入式虚拟化-xvisor-物理内存大管家
c语言·hypervisor·xvisor·嵌入式虚拟化
海绵宝宝转agent14 分钟前
2026-10-16 4算法+1面经
算法
小poop38 分钟前
基础排序算法详解——插入、选择与交换排序
算法·排序算法
青蓝智慧马老师42 分钟前
想学数据分析但零基础,正确顺序不是先学 Python
大数据·人工智能·算法
嵌入式学习菌1 小时前
Modbus 透传和 Modbus 转发区别
c语言
jeo陽1 小时前
05-数组与冒泡排序:第一个数据结构与经典算法
c语言·数据结构·算法
WL学习笔记1 小时前
模板初阶(C++)
开发语言·c++·后端·模板初阶
水饺编程1 小时前
第2章:Linux 基础,mkdir 命令的简单入门
linux·c语言·汇编
鸽鸽程序猿1 小时前
【刷题册】hot21-25
算法