【CF1764C】Doremy‘s City Construction(二分图,贪心)

news2025/1/16 8:07:59

【题目描述】
n n n个点,每个点的点权为 a i a_i ai,你可以在任意两个点之间连边,最终连成的图需要满足:不存在任意的三个点,满足 a u ≤ a v ≤ a w a_u\le a_v\le a_w auavaw(非降序)且边 ( u , v ) (u,v) (u,v) ( v , w ) (v,w) (v,w)存在。求最多能连的边数。

【输入格式】
第一行一个整数 t ( 1 ≤ t ≤ 1 0 4 ) t(1\le t\le 10^4) t(1t104),表示测试样例的数量。
对于每组测试样例第一行输入一个整数 n ( 2 ≤ n ≤ 2 × 1 0 5 ) n(2\le n\le 2\times 10^5) n(2n2×105),表示点的数量。
第二行输入 n n n个整数 a 1 , a 2 , … , a n ( 1 ≤ a i ≤ 1 0 6 ) a_1,a_2,\dots ,a_n(1\le a_i\le 10^6) a1,a2,,an(1ai106),表示每个点的权值。
数据保证每组测试用例中的 n n n的和不超过 2 × 1 0 5 2\times 10^5 2×105

【输出格式】
对于每组测试用例,输出一行共一个整数,即连出的图的最大边数。

【输入样例】

4
4
2 2 3 1
6
5 2 3 1 5 2
12
7 2 4 9 1 4 6 3 7 4 2 3
4
1000000 1000000 1000000 1000000

【输出样例】

3
9
35
2

【说明/提示】
In the first test case, there can only be at most 3 edges in the graph. A possible construction is to connect ( 1 , 3 ) , ( 2 , 3 ) , ( 3 , 4 ) (1,3), (2,3), (3,4) (1,3),(2,3),(3,4). In the picture below the red number above node i i i is a i a_i ai.

在这里插入图片描述

The following list shows all such u , v , w u,v,w u,v,w that the edges ( u , v ) (u,v) (u,v) and ( v , w ) (v,w) (v,w) exist.

  • u = 1 , v = 3 , w = 2 u=1, v=3, w=2 u=1,v=3,w=2
  • u = 1 , v = 3 , w = 4 u=1, v=3, w=4 u=1,v=3,w=4
  • u = 2 , v = 3 , w = 1 u=2, v=3, w=1 u=2,v=3,w=1
  • u = 2 , v = 3 , w = 4 u=2, v=3, w=4 u=2,v=3,w=4
  • u = 4 , v = 3 , w = 1 u=4, v=3, w=1 u=4,v=3,w=1
  • u = 4 , v = 3 , w = 2 u=4, v=3, w=2 u=4,v=3,w=2

【分析】


假如某个点与权值严格大于它的点相连,那么这个点就不能再连接权值小于等于它的点,反之同理。

那么我们考虑将所有点分成两个集合 S 1 , S 2 S_1,S_2 S1,S2,其中 S 1 S_1 S1中的所有点(数量为 c 1 c_1 c1)权值均小于等于该集合中的最大值 v 1 v_1 v1 S 2 S_2 S2中的所有点(数量为 c 2 c_2 c2)权值均大于等于该集合中的最小值 v 2 v_2 v2,且 v 1 < v 2 v_1<v_2 v1<v2。那么 S 1 S_1 S1中的所有点均可以与 S 2 S_2 S2中的所有点相连,根据乘法原理可知边数为 c 1 ∗ c 2 c_1*c_2 c1c2。因此两个集合中点数乘积的最大值即为答案。

在这里插入图片描述

注意,如果每个点权值都相同最优解只能按下图这样连边,答案为 ⌊ n / 2 ⌋ \lfloor n/2\rfloor n/2

在这里插入图片描述


【代码】

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;

typedef long long LL;
const int N = 200010;
int a[N];
int n;

int main()
{
    int T;
    cin >> T;
    while (T--)
    {
        cin >> n;
        for (int i = 0; i < n; i++) cin >> a[i];
        sort(a, a + n);
        if (a[0] == a[n - 1]) { cout << n / 2 << endl; continue; }
        LL res = 0;
        int idx = 0, cnt = 1;  // cnt表示较小数集合中的元素数量
        while (idx < n)
        {
            while (idx + 1 < n && a[idx + 1] == a[idx]) idx++, cnt++;
            res = max(res, LL(idx + 1) * (n - idx - 1));
            idx++, cnt++;
        }
        cout << res << endl;
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415680.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

『pyqt5 从0基础开始项目实战』06. 获取选中多行table 重新初始化数据(保姆级图文)

目录导包和框架代码重新初始化绑定点击事件获取当前选中的所有行id实现初始化数据完整代码main.pythreads.py总结欢迎关注 『pyqt5 从0基础开始项目实战』 专栏&#xff0c;持续更新中 欢迎关注 『pyqt5 从0基础开始项目实战』 专栏&#xff0c;持续更新中 导包和框架代码 请查…

案例分享 | 金融业智能运维AIOps怎么做?看这一篇就够了

​构建双态IT系统&#xff0c;AIOps已经是必然的选择。运维数字化转型已是大势所趋&#xff0c;实体业务的逐步线上化对IT系统的稳定与安全提出更高要求&#xff0c;同时随着双态IT等复杂系统的建立&#xff0c;如何平衡IT运维效率与成本成为区域性银行面临的重要问题&#xff…

Windows编程基础

Windows编程基础 Unit1应用程序分类 控制台程序&#xff1a;Console Dos程序&#xff0c;本身没有窗口&#xff0c;通过windows Dos窗口执行 窗口程序 拥有自己的窗口&#xff0c;可以与用户交互 库程序 存放代码、数据的程序&#xff0c;执行文件可以从中取出代码执行和获取…

【MySQL】索引事务

摄影分享~ 文章目录索引概念使用场景使用事务概念使用事务的特性索引 概念 索引是一种特殊的文件&#xff0c;包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引并指定索引的类型&#xff0c;各类索引有各自的数据结构实现。 通过目录&#xff0c;就可以…

如何使用数字示波器

本文介绍以鼎阳SIGLENT SDS1122E数字示波器为例。 带了一根电源线&#xff1b;两根信号线&#xff0c;每根信号线都有几个小配件&#xff0c;如下所示&#xff1a; 使用概述 我们都知道万用表&#xff08;又称欧姆表&#xff09;是工程师最常用的调试电路的工具&#xff0c;但万…

技术+商业“双轮”驱动,量旋科技加速推进全方位的量子计算解决方案

【中国&#xff0c;深圳】4月14日&#xff0c;在第三个“世界量子日”&#xff0c;以“‘双轮’驱动 加速未来”为主题的量旋科技2023战略发布会在线上举办。 本次发布会&#xff0c;量旋科技全线升级了三大业务线产品&#xff1a;其中重点布局的超导量子计算体系产品&#xf…

监控系统 Prometheus 的说明

一、Prometheus 是什么&#xff1f; ELK Stack 日志收集和检索平台想必大家应该比较熟悉&#xff0c;Elasticsearch Filebeat Logstash Kibana。 而 Prometheus 就相当于一整个 ELK&#xff0c;但是它其实并不是适合存储大量日志&#xff0c;也不适合长期存储&#xff08;默…

【AI绘图学习笔记】transformer

台大李宏毅21年机器学习课程 self-attention和transformer 文章目录Seq2seq实现原理EncoderDecoderAutoregressive自回归解码器Non-Autoregressive非自回归解码器Corss-attention总结TrainingtrickCopy MechanismGuided AttentionBeam Search强化学习&#xff08;Reinforcement…

AVL树,红黑树,红黑树封装map和set

文章目录AVL树AVL树的实现AVL树的节点AVL树的平衡因子AVL树的插入AVL树的旋转左单旋右单旋左右正旋右左正旋中序遍历打印节点判断子树是否平衡整体代码验证代码红黑树概念性质&#xff08;规则&#xff09;红黑树的实现结点定义插入parent在grandparent的左情况一&#xff1a;u…

登录认证功能的统一拦截技术(拦截器)

目录 1.说明 2.使用方法 (1) 定义拦截器 (2)注册配置拦截器 (3)示例&#xff1a; 3.interceptor详细说明 (1)拦截路径 (2)执行流程 (3)过滤器和拦截器的区别 4.登录校验的拦截器实现 5.全局异常处理(补充说明) 1.说明 拦截器是一种动态拦截方法调用的机制&#xff0…

3年功能测试被辞,待业3个月,2023不会自动化测试真的找不到工作吗?

前言 来自一位粉丝的投稿&#xff0c;在测试行业已近打拼了3年&#xff0c;一直兢兢业业&#xff0c;前不久被公司以人员优化的理由辞退&#xff0c;到现在已近过去了3个月还没有找到测试工作&#xff0c;让她很焦虑&#xff0c;我通过和她的交流才发现她最大的问题就是技术方…

从零开始学习Python中UnitTest测试框架:实现高效自动化测试流程

目录&#xff1a;导读 引言 1.白盒测试原理 2.自动化测试用例编写 3.UnitTest测试框架 3.1UnitTest组件&#xff08;测试固件&#xff09; 3.1.2测试套件 3.1.3测试运行 3.1.4测试断言 3.1.5测试结果 3.2unittest测试固件的详解 3.2.1测试固件每次均执行 3.2.2测试…

【JavaEE】CAS机制(比较并交换)

哈喽&#xff0c;大家好~我是你们的老朋友保护小周ღ&#xff0c;本期为大家带来的是 CAS (compare and swap) 比较并交换&#xff0c;CAS 是物理层次支持程序的原子操作&#xff0c;CAS 是一种完全不同于 synchronized 锁保证多线程安全问题的机制&#xff0c;可以用来进行无锁…

Java基础——Stream流

&#xff08;1&#xff09;Stream流概述&#xff1a; 1.什么是Stream流&#xff1f; 用于简化集合和数组操作的API。结合了Lambda表达式。方便操作集合/数组的手段&#xff08;集合/数组才是开发的目的&#xff09;。2.体验Stream流的作用&#xff1a; import java.util.Arr…

高并发场景I/O优化

大家好&#xff0c;我是易安&#xff01; Java I/O是一个众所周知的概念。它常被用于读写文件、实现Socket信息传输等操作&#xff0c;这些都是系统中最常见的与I/O相关的任务。 我们都了解&#xff0c;I/O的速度相较于内存速度较慢。在当前大数据时代背景下&#xff0c;I/O性能…

java足球体育新闻资讯发布系统ssh

为 本系统的功能目标分为以下几个模块&#xff1a;用户管理模块、足球新闻类别管理模块、足球新闻管理模块、留言管理模块和前台足球新闻浏览模块。 系统功能模块的划分&#xff0c;是在需求分析基础上进行的&#xff0c;是把具有复杂功能的系统通过设计分解为具有基本独立&…

【并发编程】AQS源码

ReentrantLock 互斥锁,可重入 AQS是可以支持互斥锁和共享锁的&#xff0c;这里只分析互斥锁的源码 加锁 公平锁和非公平锁 公平锁 final void lock() {acquire(1); //抢占1把锁.}// AQS里面的方法public final void acquire(int arg) { if (!tryAcquire(arg) &&acq…

MySQL:事务、索引、用户管理、备份、数据库设计(三大范式)

文章目录Day 03&#xff1a;一、事务1. 原则2. 测试实现二、索引1. 分类2. 创建索引3. 分析 sql 执行的状况4. 测试索引5. 索引原则三、数据库用户管理四、备份五、规范数据库设计1. 三大范式注意&#xff1a;Day 03&#xff1a; 一、事务 事务(transaction)&#xff1a;要么…

含光热电站、有机有机朗肯循环、P2G的综合能源优化调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

『pyqt5 从0基础开始项目实战』04. 表格数据的初始化(保姆级图文)

目录导包和框架代码准备json数据文件表格数据接入1. 准备文件路径2. 读取json数据3. 将得到的json数据放入table设置单元格不可修改把数据中的数字转为映射内容完整代码总结欢迎关注 『pyqt5 从0基础开始项目实战』 专栏&#xff0c;持续更新中 欢迎关注 『pyqt5 从0基础开始项…