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;
}
相关推荐
银河码几秒前
嵌入式linux驱动开发:什么是Linux驱动?深度解析与实战入门
linux·c语言·驱动开发·驱动入门
爱吃KFC的大肥羊19 分钟前
C/C++常用字符串函数
c语言·数据结构·c++·算法
im_AMBER21 分钟前
Leetcode 11 java
java·算法·leetcode
丶小鱼丶30 分钟前
二叉树算法之【Z字型层序遍历】
java·算法
阿捏利1 小时前
C Primer Plus 第6版 编程练习——第15章
c语言·c primer plus
阿捏利1 小时前
【加解密与C】HASH系列(四)SHA-3
c语言·加解密·sha-3
岁忧2 小时前
(nice!!!)(LeetCode 每日一题) 2561. 重排水果 (哈希表 + 贪心)
java·c++·算法·leetcode·go·散列表
先做个垃圾出来………2 小时前
1. 两数之和
算法·leetcode·职场和发展
我要成为c嘎嘎大王2 小时前
【C++】类和对象(2)
开发语言·c++
神器阿龙3 小时前
排序算法-冒泡排序
数据结构·算法·排序算法