VIJOS p1023 Victoria的舞会3 终于AC了!!!

多模态特征融合方法总结 由于本人的研究是文本、语音和图像三者模态数据的融合,所以针对的是这三种模态的特征融合方法进行总结。 首先,多模态特征融合的方法大体分为三种 阅读详情

图论一直以来都很弱,又不懂什么最小点基(实现方法)……AC的时候……真爽啊。。。。。

Victoria的舞会3 Victoria的舞会 系列  
   
   
 
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
-------------------------
Accepted 有效得分:100 有效耗时:0ms

hoho~

先把题贴一下:

描述 Description  
    Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。
  Victoria准备邀请n个已经确定的人,可是问题来了:
  这n个人每一个人都有一个小花名册,名册里面写着他能够通知到的人的名字。比如说在A的人名单里写了B,那么表示A能够通知到B;但是B的名单里不见的有A,也就是说B不见得通知到A。
  Victoria觉得需要确定自己需要通知多少个人m,能够实际将所有人n都通知到。并求出一种方案以确定m的最小值是多少。
  注意:自己的名单里面不会有自己的名字。Victoria可以自身通知到所有n个人。
   
   
 输入格式 Input Format 
  第一行一个数n。接下来n行,每i+1行表示编号为i的人的小花名册名单,名单以0结束。1<=n<=200。
   
   
 输出格式 Output Format 
  一个数,m。
   
   
 样例输入 Sample Input  
 

18
0
11 0
0
0
0
16 0
14 0
0
0
0
2 13 0
0
11 0
7 0
0
6 0
0
0

   
   
 样例输出 Sample Output  
  14
   
   
 时间限制 Time Limitation 
  各个测试点1s

貌似有一个类似模拟的办法,VIJOS上有人说过了。

以下是我苦思冥想出来的成果,没想到一遍就AC了。

1 把原有向图G中强连通分量缩为一点

    1.1 DFS(G),记录节点访问完成的顺序,也可以说是一次拓扑排序。

    1.2 反转图每一条弧得到新图Gt。

    1.3 按照1.1记录的顺序DFS(Gt),得到的森林里每一棵树都是一个强连通分量。(用并查集合并每一个访问到的节点,从而实现“缩”强连通分量)。得到一强连通分量为单位的图Gscc。

2 DFS(Gscc),再一次拓扑排序,记录强连通分量访问完成的顺序。

4 按照2记录的顺序DFS(Gscc),用并查集得到访问产生的森林。

5 统计最后森林中树的个数即可得到答案。

 

程序(K&R风格代码)有120+行的样子。。。

 

 

#include < stdio.h >
#include
< stdbool.h >
void  toposort( void );
void  topovisit( int  i);
void  reverse( void );
void  contract( void );
void  convisit( int  i);
void  contract2( void );
void  convisit2( int  i);
 
int  rank[ 201 ], set [ 201 ];

void  Makeset( int  x)
{
        
set[x]=x;
        rank[x]
=0;
}

int  Find( int  x)
{
        
if(set[x]!=x)
                
set[x]=Find(set[x]);
        
return set[x];
}

void  Link( int  x, int  y)
{
        
if(rank[x]>rank[y])
                
set[y]=x;
        
else{
                
set[x]=y;
                
if(rank[x]==rank[y]) rank[y]++;
        }

}

void  Union( int  x, int  y)
{
        Link(Find(x),Find(y));
}


int  n,topo[ 201 ],p; 
int  nc;
bool  gt[ 201 ][ 201 ],g[ 201 ][ 201 ],vis[ 201 ];
int  main( void )
{
        
int i,j,k;
        
int t,count=0;
        FILE 
*fin=stdin;
        fscanf(fin,
"%d ",&n);
        nc
=n;
        
for(i=0;i<n;i++){
                
while(1){
                        fscanf(fin,
"%d", &t);
                        
if(!t) break;
                        g[i][t
-1]=true;
                }

                Makeset(i);
        }

        toposort();
        reverse();
        contract();
        toposort();
        contract2();
        
for(i=0;i<n;i++) if(set[i]==i) count++;
        printf(
"%d ",count);
        
return 0;
}

void  toposort( void )
{
        
int i;
        memset(vis,
0,sizeof(vis));
        p
=0;
        
for(i=0;i<n;i++) if(!vis[i]) topovisit(i);
}

void  topovisit( int  i)
{
        
int j;
        vis[i]
=true;
        
for(j=0;j<n;j++){
                
if(g[i][j] && Find(i)!=Find(j) && !vis[j]){
                        topovisit(j);
                }

        }

        topo[p
++]=Find(i);
        
}

void  reverse( void )
{
        
int i,j;
        
for(i=0;i<n;i++)
                
for(j=0;j<n;j++)
                        
if(g[i][j]) gt[j][i]=true;
}

void  contract( void )
{
        
int j;
        memset(vis,
0,sizeof(vis));
        
for(j=0;j<n;j++) if (!vis[topo[j]]) convisit(topo[j]);
}

void  convisit( int  i)
{
        
int j;
        vis[i]
=true;
        
for(j=0;j<n;j++){
                
if(gt[i][j] && !vis[j]){
                        Union(i,j);
                        convisit(j);
                }

        }

}

void  contract2( void )
{
        
int j;
        memset(vis,
0,sizeof(vis));
        
for(j=0;j<p;j++) if (!vis[topo[j]]) convisit(topo[j]);
}

void  convisit2( int  i)
{
        
int j;
        vis[i]
=true;
        
for(j=0;j<n;j++){
                
if(g[i][j] && !vis[j]){
                        Union(i,j);
                        convisit(j);
                }

        }

}

CloudCompare 二次开发:插件中的 PCL 环境配置与编程 在进行 CloudCompare 的二次开发过程中,我们常常需要使用点云库(Point Cloud Library,简称 PCL)来处理和分析点云数据。在 CloudCompare 的界面中,选中一个点云对象,然后点击菜单栏中的 “插件” -> “MyPluginAction”。插件将对选中的点云对象进行体素滤波处理,并更新显示结果。下面我们将展示一个简单的插件编程示例,该示例使用 PCL 对输入的点云数据进行体素滤波处理。方法进行体素滤波处理,并将结果点云赋值给选中的点云对象。文件并点击 “打开”。 阅读详情

相关推荐

DETRs with Collaborative Hybrid Assignments Training论文阅读与代码

在这篇论文中,作者观察到在DETR中将过少的 Query 分配为正样本,采用一对一的集合匹配,会导致对编码器输出的监督稀疏,严重损害编码器的区分特征学习,反之亦然,也会影响解码器中的注意力学习。为了缓解这个问题,作者提出了一种新颖的协同混合分配训练方案,名为Co-DETR,以从多样的标签分配方式中学习更高效、更有效的基于DETR的检测器。这种新的训练方案可以通过训练多个并行辅助 Head ,以一对多的标签分配方式(如ATSS和Faster RCNN)进行监督,轻松增强端到端检测器中编码器的学习能力。

qingjing0413的博客 1154

Victoria的舞会2——图的连通性及连通分量

【Vijos1022]】Victoria的舞会2 Description Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。 Victoria准备邀请n个已经确定的人,可是问题来了: 这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。比如说在A的人名单里写了B,那么表

在思索中前行! 1321

Ubuntu-22.04安装VMware虚拟机并安装Windows10

最近在研究虚拟机,主要集中在KVM、Virtualbox和VMware这三种虚拟机上。前面我已经研究了前两种虚拟机的安装和使用方式,这篇文章介绍3兄弟中最后一个虚拟机安装和使用方式。Virtualbox虚拟机安装和使用KVM虚拟机安装和使用相比于前两种,VMware的安装方式最麻烦,但是综合体验下来我感觉流畅度最好。如果你确实有在Linux上使用VMware虚拟机的需求,那不妨跟着我看下去吧。1、gcc版本和内核版本一定要匹配上,否则会出各种错误。

jiexijihe945的博客 4115

Vijos1022. Victoria的舞会2

试题请参见: https://vijos.org/p/1130 题目概述 我们要求找出具有下列性质数的个数(包含输入的自然数n): 先输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理 1. 不作任何处理; 2. 在它的左边加上一个自然数,但该自然数不能超过原数的一半; 3. 加上数后,继续按此规则进行处理,直到不能再立生自然数为止. 输入 一个自然数n.

Infinite Script 2357

SAP HANA 的一个王炸技能,Smart Data Access

SAP HANA Cloud近期推出Knowledge Graph Engine(KGE),支持RDF三元组存储和SPARQL查询,与向量引擎等组件协同实现混合检索。同时文章介绍了HANA的Smart Data Access(SDA)功能,它通过虚拟表技术实现跨系统联邦查询,支持30+种数据源(不包括PostgreSQL),适用于混合云场景。SDA通过谓词下推优化性能,典型应用包括冷热数据分层和跨系统报表分析。对于PostgreSQL连接需求,建议使用HANA的Smart Data Integration方

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 496

多线程开发的基本概念

在Android开发中,我们常常会遇到多线程开发的需求。由于Android中的,我们不能在主线程处理耗时逻辑,否则会导致卡顿,甚至出现ANR(应用无响应)等异常情况。因此,我们需要将网络请求等耗时操作放到中去执行,完成后再更新UI。多线程开发因此成为Android开发中的一个重要部分。随着Android开发技术的不断进步,从早期的使用Handler,到后来的RxJava,再到如今的Kotlin协程,切换线程以及并发编程的代码写起来是越来越简洁了。

喻志强的博客 1018

vijos1023 Victoria的舞会3

这道题我用的是floyd预处理,并查集的思想。虽然实现很简单,但是有很多细节问题还是值得认真研究的。 https://www.vijos.org/p/1023 先上一下我之前错的代码: //#include #include #include #include #include #include #include #include #include #include #include #

zhangxian___的博客 434

自定义模型训练——打造专属OpenClaw模型(2026AI版)

本文介绍了OpenClaw自定义模型训练的核心流程,包括框架选择(PyTorch、TensorFlow、HuggingFace和原生OpenClaw框架)、训练环境搭建脚本、以及数据收集系统的设计。数据收集器支持从数据库、API、文件和网络等多种来源获取训练数据,并提供灵活的过滤机制确保数据质量。通过这套系统,开发者可以高效准备训练数据,为后续模型训练打下坚实基础。

博客 875

求助大神解答

这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。而且如果A名单里面有B,那么B名单里面肯定有A,也就是说两个人如果一方愿意和另一方交流,那么另一方也肯定愿意和这一方交流。Victoria觉得需要在这n个人里面确定m个人,保证这m个人每一个人都能在舞会中找到至少k个人交流,并求出一种方案以确定m的最大值是多少。现在给定一个n个点m条边的无向图,问在小明的评分方法下,分数为多少。一个无向图的分数定义为,各个连通块是树的数量。于是,他发明了自己的对于无向图的评分方法。

LIYUNINGMENG的博客 274

道威棱镜的设计参考

道威棱镜的设计参考

weixin_72050316的博客 379

1、电路分析知识全解析:从基础到实践应用

本博客全面解析电路分析知识体系,涵盖从基础的电压、电流、电阻概念到复杂的交流电路、瞬态分析和高级应用如滤波器与变压器等内容。适合电子技术专业学生和技术爱好者学习,提供详细的知识结构、学习路径、实践示例以及丰富的学习资源,包括计算机模拟工具Multisim和PSpice的使用指导。通过理论与实践结合,帮助学习者掌握电路分析的核心技能,为电子工程和电力系统等相关领域打下坚实基础。

iii12的专栏 159

victoria的舞会1 java_Victoria的舞会1

描述:Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。Victoria准备邀请n个已经确定的人,可是问题来了:这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。比如说在A的人名单里写了B,那么表示A愿意与B交流;而且如果A名单里面有B,那么B名单里面肯定有A,也就是说两个人如果一方愿意和另一方交流...

weixin_28872105的博客 182

详解大端模式和小端模式

详解大端模式和小端模式 一、大端模式和小端模式的起源         关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令

ce123的技术博客 19万+

|Vijos|图论强连通分量|P1023 Victoria的舞会3

https://vijos.org/p/1023 此题虽然可以并查集AC,但是实际上并查集是错误的 这道题只能用tarjan算法求强连通分量,因为这个是一个有向图,而并查集只能求无向图的强连通分量 #include #include #include #include #include #include #define ms(i,j) memset(i, j, sizeof(i)); usi

博客停更,请到"再见,优快云"文章中找新博客地址 593

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[vijos P1023] Victoria的舞会3

这…本来想学习一下Tarjan算法的,没想到码都码好了发现这题不是求强连通分量而是简单的连通分量…图论基础都还给老师了啊啊啊!最后深搜通通解决! v标记是否被访问过,scc标记每个的祖先(本来想写Tarjan的才弄出这么奇葩个数组名字),w用于最后的统计。 program vijos_p1023; var map:array[0..210,0..210] of longint; ...

weixin_34044273的博客 146

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【基础练习】【强连通tarjan】vijos1021-1023 Victoria的舞会系列题解

题目连接:https://vijos.org/p/Victoria%E7%9A%84%E8%88%9E%E4%BC%9A 这是一个图论的系列题目,题目比较简单,主要在于数据实在是弱···两百个点暴搜都能过啊··· vijos用户体验还是不错的 除了管理不太严格导致题解混乱 虽然二老板在但也长期无人打理  如果照管好 这一定会是一个相当出色的OJ 1021 舞会1 这道题目其实就是简

西家家 1089

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

vijos--P1021Victoria的舞会1贪心

题目: 描述 Victoria是一位颇有成就的艺术家,他因油画作品《我爱北京天安门》闻名于世界。现在,他为了报答帮助他的同行们,准备开一个舞会。 Victoria准备邀请n个已经确定的人,可是问题来了: 这n个人每一个人都有一个小花名册,名册里面写着他所愿意交流的人的名字。比如说在A的人名单里写了B,那么表示A愿意与B交流;而且如果A名单里面有B,那么B名单里面肯定有A,也就是说两个人如果一方...

weixin_44606952的博客 355

颇有成绩的一天(第十二天)

       今天可好,今天早上五点多起来,不过昨天晚上睡的很晚,早上起来就决定投简历,想了很久了,因为现在找工作的人太多了,我知道任何一个人事部经理的邮箱每天都会很着无数的邮件,所有要想在前面让各个经理看见自己的邮件就必须在他的邮箱前面,所以选择今天早上在经理上班之前发到他手上。这也是一个细节,刚刚看了《细节决定成败》就得以运用啊。随便也将自己的题目改为“有项目经验的应届生”这样希望能更加吸引眼

flyerhua的专栏 537

我的作品截图

作品一:3D射击游戏1.工程框架2.主菜单界面3.选择关卡界面4.游戏场景5.接任务场景6.进行任务场景7.完成任务场景作品二:2D推箱子1.工程框架2.游戏进行3.地图编辑器

panmmjun的专栏 373

【图论】【Floyed】舞会邀请(CODE[VS] 2604)

舞会邀请 CODE[VS] 2604 题目大意:Smart要叫一些人开Party,每个人可以通知一部分人,Smart去通知一些人,再让这些人去通知其他人,问Smart最少通知几个人,可以使全部人都被通知到

ssllyf的博客 400

百度地图学习总结(2)—Hello-BaiduMap

接上一篇: http://blog.youkuaiyun.com/user11223344abc/article/details/781543571.集成前想想申请了半天,感觉累累哒,迫不及待的就想看见点什么,于是开始集成,集成就涉及到一个问题,百度地图sdk都是分模块的,那么我思考我的大体目标是: 基础地图:基本展示,隐藏地图右下角加减号,将距离比例尺调小… 全量定位:包含基础,离线,室内… 云检索:poi

点滴积累 744

我的作品

1.ESFramework通信框架 ESFramework 是一套性能卓越、稳定可靠、强大易用的跨平台通信框架,支持应用服务器集群。其内置了消息的收发与自定义处理(支持同步/异步模型)、消息广播、P2P通道、文件传送(支持断点续传)、心跳检测、断线重连、登录验证、在线用户管理、好友与群组管理、性能诊断等功能。基于ESFramework,您可以方便快捷地开发出各种优秀的网络通信应用。此外,我们在长...

weixin_33670786的博客 155

【vijos】P1022 Victoria的舞会2

题解 #include #include using namespace std; int father[300]; int a[300]; void init(int n) { for(int i=1;i<=n;i++) father[i]=i; } int find(int x) { if(x!=father[x]) father[x]=find(father[x]); re

zhuml123的专栏 576
上一篇: C语言:用负数作数组下标?YES!
下一篇: USACO Prime Cryptarithm Accepted
DaNmarner
博客等级 码龄21年 27粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值