2023牛客暑期多校训练营5-C Cheeeeen the Cute Cat

news/2025/1/15 16:09:49/

2023牛客暑期多校训练营5-C Cheeeeen the Cute Cat

https://ac.nowcoder.com/acm/contest/57359/C

文章目录

  • 2023牛客暑期多校训练营5-C Cheeeeen the Cute Cat
    • 题意
    • 解题思路
      • 兰道定理:
    • 代码

题意

在这里插入图片描述

解题思路

可以将边 ( i , j + n ) (i,j+n) (i,j+n)转变成 ( i , j ) (i,j) (i,j)连边,将二分图转变为竞赛图(由题意可知没有重边, n ( n − 1 ) 2 \frac{n(n-1)}{2} 2n(n1)条边恰好等于一个 n n n个点的竞赛图边数)。根据题意,在二分图上进行完美匹配等价于求对应竞赛图的哈密顿回路:将 ( a 1 , a 2 + n ) 、 ( a 2 , a 3 + n ) 、 ( a 3 , a 4 + n ) 、 ( a 4 , a 5 + n ) ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ( a k , a 1 + n ) (a_1,a_2+n)、(a_2,a_3+n)、(a_3,a_4+n)、(a_4,a_5+n)······(a_k,a_1+n) (a1,a2+n)(a2,a3+n)(a3,a4+n)(a4,a5+n)⋅⋅⋅⋅⋅⋅(ak,a1+n)转变为 a 1 ⟶ a 2 ⟶ a 3 ⟶ a 4 ⟶ a 5 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ a k ⟶ a 1 a_1\longrightarrow a_2\longrightarrow a_3\longrightarrow a_4\longrightarrow a_5······a_k\longrightarrow a_1 a1a2a3a4a5⋅⋅⋅⋅⋅⋅aka1
每个 n ≤ 3 n\le 3 n3的强连通分量都有哈密顿回路,若该图中都是这种强连通分量,就能找出一条长为 n n n的哈密顿回路,若有孤立的强连通分量,就会有 1 1 1个点无法匹配。

对于一个强连通图显然可以全部匹配,则答案为 n n n,只需特判孤立的强连通分量即可,若有,则答案为 n − 1 n-1 n1

兰道定理:

一个竞赛图强连通的充要条件是:把它的所有顶点按照出度d从小到大排序,对于任意k∈[0,n−1]
都不满足 ∑ i = 0 k d i = ( k + 1 2 ) \sum_{i=0}^k di=\dbinom {k+1}2 i=0kdi=(2k+1)

根据兰道定理,可以根据出度序列判断强连通分量。(当然也可以尝试 t a r j a n tarjan tarjan水过去。)

代码

#include<bits/stdc++.h>
using namespace std;
int n,deg[3003],a;
int main(){cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a;if(a)deg[a]++;}}sort(deg+1,deg+n+1);int s=0;for(int i=1,j=0;i<=n;i++){s+=deg[i];if(s==i*(i-1)/2){if(i-j<3){cout<<n-1;return 0;}j=i;}}cout<<n;
}

http://www.ppmy.cn/news/998933.html

相关文章

[SQL挖掘机] - 窗口函数 - lead

介绍: lead() 是一种常用的窗口函数&#xff0c;它用于获取某一行之后的行的值。它可以用来在结果集中的当前行后面访问指定列的值。 用法: lead() 函数的语法如下&#xff1a; lead(列名, 偏移量, 默认值) over (partition by 列名1, 列名2, ... order by 列名 [asc|desc]…

使用docker部署一个jar项目

简介: 通过docker镜像, docker可以在服务器上运行包含项目所需运行环境的docker容器, 在线仓库里有很多各个软件公司官方发布的镜像, 或者第三方的镜像. 如果我们需要使用docker把我们的应用程序打包成镜像, 别的机器上只要安装了docker, 就可以直接运行镜像, 而不需要再安装应…

分布式天梯图算法在 Redis 图数据库中的应用

分布式天梯图算法在 Redis 图数据库中的应用 一、简介1 天梯图算法2 天梯图算法在Redis的应用 二、Redis分布式天梯图算法设计与优化1 基于天梯图的分布式算法设计2 多节点扩展与负载均衡优化3 数据存储方案与压缩策略 三、技术实现3.1 系统架构设计3.2 技术选型3.3 关键实现细…

c++ / python / java / PHP / SQL / Ruby / Objective-C / JavaScript 发展史

c发展史 C是由丹尼斯里奇和肯汤普森在1970年代早期开发的C语言的扩展。C最初被称为“C with Classes”&#xff0c;是在1980年代初期由比雅尼斯特劳斯特鲁普开发的。 1983年&#xff0c;斯特劳斯特鲁普将C with Classes重新命名为C。在1985年&#xff0c;C编译器的第一个版本被…

基于WebRTC升级的低延时直播

快直播-基于WebRTC升级的低延时直播-腾讯云开发者社区-腾讯云 标准WebRTC支持的音视频编码格式已经无法满足国内直播行业需求。标准WebRTC支持的视频编码格式是VP8/VP9和H.264&#xff0c;音频编码格式是Opus&#xff0c;而国内推流的音视频格式基本上是H.264/H.265AAC的形式。…

Swagger UI教程 API 文档和Node的使用

在团队开发中&#xff0c;一个好的 API 文档可以减少很多交流成本&#xff0c;也可以使一个新人快速上手业务。 前言 swagger ui是一个API在线文档生成和测试的利器&#xff0c;目前发现最好用的。为什么好用&#xff1f;Demo 传送门 支持API自动生成同步的在线文档 这些文档可…

软件测试面试总结——http协议相关面试题

前言 在PC浏览器的地址栏输入一串URL&#xff0c;然后按Enter键这个页面渲染出来&#xff0c;这个过程中都发生了什么事?这个是很多面试官喜欢问的一个问题 如果测试只是停留在表面上点点点&#xff0c;不知道背后的逻辑&#xff0c;是无法发现隐藏的bug&#xff0c;只能找一…

python批量修改word文档,替换word文档文字

之前写了一个python脚本&#xff0c;用于姜数据库中的数据批量写入到word模板中&#xff0c;生成很多份报告。 但是模板并不是万能的&#xff0c;有时候会因为某个填充的数据为空导致那句话没有用&#xff0c;需要删掉或者微调。 因此&#xff0c;需要再写一个python文件做一…