HDU 1068 Girls and Boys 二分图 最大独立集 字符串

树形动态规划(最大子独立集) 最大子独立集 对于一棵有N个结点的无根树,选出尽量多的结点,使得任何两个结点均不相邻(称为最大独立集)。 输入 第1行:1个整数N(1 <= N <= 6000),表示树的结点个数,树中结点的编号从1..N 接下来N-1行,每行2个整数u,v,表示树中的一条边连接结点u和v 输出 第1行:1个整数,表示最大独立集的结点个数 样例输入 11 1 2 1 3 3 4 3 5 阅读详情

独立集是指两两之间没有边的顶点集合。顶点数目最多的集合称为最大独立集。

二分图最大独立集 = 顶点数 -  二分图最大匹配。

 

所以这题在于解决二个问题:

1、求二分图的最大匹配。

由于左右两个集合是同一集合,不分男女。所以,理论上讲存在0到3,就一定存在3到0。刚开始的想法是只将0到3记起来,

3到0就不记录了。这样在求最大匹配是可以少点计算。可是却WA了!不解。我还是觉得这种思路没错,并且可以减少时间。

个人怀疑是数据的问题了。

2、输入的每组数据可以看成是一个字符串。然后在处理之。当然,这题不看成字符串也是可以的。因为数组数据的“:”、

“()”的位置是固定的,那么就可以一个一个数来输入了。

 

AC代码:2871MS

#include<iostream>
using namespace std;

const int MAX=500;   //最多人数
const int help[]={1,10,100,1000,10000};  //辅助计算的数组

bool map[MAX][MAX];
bool used[MAX];
int link[MAX];
int n;
char *tmp;

void deal(char *a)  //处理输入的字符串,不是0到9的字符全赋为'\0'
{
	int i,len=strlen(a);

	for(i=0;i<len;i++)
	{
		if(!(a[i]>='0' && a[i]<='9'))
		{
			a[i]='\0';
		}
	}
}

int calculate(char *a)   //计算字符串的值,该字符串全由数字组成
{
	int len=strlen(a);

	int num=0;
	for(int i=len-1;i>=0;i--)
	{
		num+=help[len-i-1]*(a[i]-'0');
	}

	return num;
}

void storeMap()   //存储二分图
{
	int i,j,k,row,col;
	char ch[MAX*2];

	memset(map,false,sizeof(map));

	getchar();
	for(i=1;i<=n;i++)
	{	
		gets(ch);   //获取整行,带空格

		deal(ch);

		tmp=ch;
		row=calculate(tmp);  //计算二分图的左顶点
		while(*tmp!='\0')
			tmp++;
		
		while(*tmp=='\0')
			tmp++;
		k=calculate(tmp);   //计算左顶点关联的右顶点数
		while(*tmp!='\0')
			tmp++;

		for(j=0;j<k;j++)
		{
			while(*tmp=='\0')
				tmp++;
			col=calculate(tmp);  //二分图右顶点
			while(*tmp!='\0')
				tmp++;

			//if(!map[col][row])
			   map[row][col]=true;   //true表示左右顶点关联
		}
	}
}

bool can(int t)  //确定是否存在增广路径
{
	for(int i=0;i<n;i++)
	{
		if(!used[i] && map[t][i])
		{
			used[i]=true;
			
			if(link[i]==-1 || can(link[i]))
			{
				link[i]=t;
				return true;
			}
		}
	}

	return false;
}

int maxMatch()
{
	int num=0;
	memset(link,0xff,sizeof(link));

	for(int i=0;i<n;i++)   //从每一左顶点出发寻找增广路径
	{
		memset(used,false,sizeof(used));
		if(can(i)) num++;
	}

	return num;
}
		
int main()
{
	while(cin>>n)
	{
		storeMap();

		cout<<n-maxMatch()/2<<endl;
	}

	return 0;
}


 

 

 

 

SiLan_EAP_AOI_Test_Case.xlsx 立即下载

相关推荐

制造业重点关注的17个Agent智能体落地场景方案.pptx

制造业重点关注的17个Agent智能体落地场景方案.pptx

独立集

题目描述 有一天,一个名叫顺旺基的程序员从石头里诞生了。又有一天,他学会了冒泡排序和独立集。在一个图里,独立集就是一个点集,满足任意两个点之间没有边。于是他就想把这两个东西结合在一起。众所周知,独立集是需要一个图的。那么顺旺基同学创造了一个算法,从冒泡排序中产生一个无向图。 这个算法不标准的伪代码如下: procedure bubblesortgraph(n, a[]) :

wang_sj的博客 747

STM32 FreeRTOS 多任务实战手册:优先级反转、任务栈与 FromISR 坑位

任务莫名其妙卡死、优先级翻转、栈溢出查不到现场——RTOS 的问题几乎都不在 API 调用,而在调度时序和临界区边界。 【10 个专题,每个含复现步骤 / 测量数据 / 判据 / 落地代码】 1. STM32 NVIC中断优先级详解 2. STM32 FreeRTOS 软件定时器实测 3. STM32 FreeRTOS 消息队列 ISR 收发实测 4. STM32 FreeRTOS 优先级反转实测 5. STM32 FreeRTOS StreamBuffer 流缓冲区串口DMA不 6. STM32 FreeRTOS 事件组实测 7. STM32 FreeRTOS 任务栈溢出排查实测 8. STM32 FreeRTOS 堆内存管理实测 9. STM32 FreeRTOS CPU占用率统计实测 10. STM32 移植LwIP+FreeRTOS双任务协同 【这份教程解决什么】 · 每类问题都从「现象 → 可疑层 → 实测判据 → 根因 → 修复动作」走一遍,不停留在寄存器配置说明。 · 代码块与实测表格按专题编号,可直接对照自己的工程定位;目录按专题编号,方便对照查阅。 【适合谁】正在把裸机工程迁到 RTOS、或已经被优先级反转/栈溢出/中断里调 API 坑过的嵌入式工程师。 【形态】PDF 教程,10 个专题 + 速查目录,含代码块与实测数据表。

HDU 1068 Girls and Boys二分图最大匹配

Description the second year of the university somebody started a study on the romantic relations between the students. The relation “romantically involved” is defined between one girl and one boy.

MissZhou要努力 679

科技中介服务机构如何构建智能化服务平台以提升服务效率与专业度?.docx

科技中介服务机构如何构建智能化服务平台以提升服务效率与专业度?

政府科技管理者如何高效完成科技成果评价与价值挖掘?.docx

政府科技管理者如何高效完成科技成果评价与价值挖掘?

HDU1232 畅通工程 并查集

这题是并查集的简单运用。我所利用的并查集没有经过优化。只用到了初始化(每个元素都是一个集合)、查找(某个 元素所在的集合,集合以根节点标志)、合并(两集合不属于同一集合则合并) 这题的主要思想在于:找出连通分量的个数。减一之后就是所求最小需要添加的路径数。而利用并查集时可以发现连通 分量的个数等于父节点为自身的节点数目。   AC代码: #include using namespac

ON THE WAY TO GEEK 5622

【人工智能工程】完结JEV 决策大模型实战,让 AI 从会聊天到能决策

内容概要:本文介绍了JEV决策大模型的核心理念与工程实践,强调将其作为“快判断”层从通用大模型中剥离使用。JEV不生成文本,而是针对明确的状态和问题,输出结构化、带概率的决策结果,适用于高频、原子化的判断任务。文章详细阐述了JEV的工作机制、与通用大模型的本质区别、典型应用场景(如Agent工具路由)、questions的设计方法、能力边界以及兜底机制的重要性,并指出其在成本、延迟和输出确定性方面的优势。; 适合人群:具备一定AI工程实践经验的研发人员、系统架构师,尤其是正在构建Agent、自动化决策系统或优化大模型调用链的技术团队;; 使用场景及目标:①优化高频、轻量级判断任务(如工单分类、内容初筛、RAG相关性判定)的效率与成本;②实现主模型与决策模块的职责分离,提升系统整体稳定性与可维护性;③学习如何设计高质量的判断问题与概率校准机制; 阅读建议:此资源聚焦于决策模型的工程化落地,建议结合实际业务中的判断流程进行POC验证,重点关注questions设计、阈值校准与兜底策略的构建,避免盲目神化JEV的能力。

HDU 1151 Air Aaid 最小路径覆盖

题目大意: 在一个城镇,有m个路口,和n条路,这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇, 伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所有的路口搜一遍。这个题目就转换成求解有向无环图的最 小路径覆盖问题了。 一个结论:有向无环图的最小路径覆盖=该图的顶点数-该图的最大匹配。   AC代码: #include using namespace std;

ON THE WAY TO GEEK 2311

塔式熔盐光热朗肯循环电站建模及Simulink仿真研究

内容概要:本文围绕塔式熔盐光热朗肯循环电站的建模与Simulink仿真展开系统性研究,重点构建了太阳能集热场、熔盐储热系统及朗肯循环发电单元的数学模型,并基于Simulink平台搭建了完整的集成化仿真系统。研究深入分析了系统的能量转换机制、热力循环特性与动态响应行为,通过设置不同太阳辐照强度、负载变化等工况进行仿真,验证了系统在变工况条件下的运行稳定性与调节能力。同时,系统探讨了熔盐流量、储热容量、换热器效率等关键参数对电站整体热效率与输出功率的影响规律,提出了优化运行策略与参数匹配方案,旨在提升光热电站的能量利用率、运行灵活性与供电可靠性。; 适合人群:具备一定电力系统、热力学或新能源工程背景,从事光热发电、综合能源系统建模与仿真的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于塔式光热电站的教学演示与原理讲解,帮助学生理解光-热-电转换全过程;②为光热系统的设计优化、动态性能评估、控制策略开发(如温度控制、功率调节)提供高保真仿真平台与数据支撑;③支持新型储热调度策略与系统集成方案的验证与测试。; 阅读建议:建议读者结合提供的Simulink模型文件同步操作,深入理解各子系统模块(如集热场、储罐、蒸汽发生器、汽轮机等)的建模逻辑与参数设置方法,重点关注能量流、质量流与控制信号的耦合机制,可进一步在此基础上开发先进控制算法或进行多能互补系统集成研究。

多目标粒子群算法求解综合能源系统最优容量配置研究(Matlab代码实现)

内容概要:本文研究了多目标粒子群算法在综合能源系统最优容量配置中的应用,通过Matlab代码实现求解多目标优化问题。文中系统构建了涵盖经济性、环保性和能源利用效率的多目标优化框架,详细阐述了综合能源系统中各类设备的数学模型,并采用改进的多目标粒子群算法进行高效求解,最终获得Pareto最优解集,为综合能源系统的科学规划与可持续发展提供了坚实的理论支撑与实用的技术路径。; 适合人群:具备一定电力系统、优化算法及Matlab编程基础的研究生、科研人员及相关工程技术人员。; 使用场景及目标:①掌握多目标优化问题在综合能源系统容量配置中的建模方法;②学习多目标粒子群算法的实现过程及其在能源系统规划中的具体应用;③通过Matlab代码实践提升算法编程与仿真分析能力。; 阅读建议:建议读者结合Matlab代码逐段理解算法实现细节,重点关注目标函数构建、约束条件处理及Pareto解集的生成过程,同时可尝试调整算法参数以观察优化结果的变化,深化对算法性能的理解。

HDU 1054 Strategic Game 二分图 最小顶点覆盖

做该题要掌握以下两点: 1、二分图最小顶点覆盖 = 双向二分图最大匹配 / 2 。 2、利用STL中的vector的可以很方便的建立图的邻接表存储。主要用到push_back()、clear()操作。 3、scanf()和printf()函数可以很方便的实现题中的输入和输出。详见代码。   AC代码:625MS #include #include using namespace s

ON THE WAY TO GEEK 1677

科技中介服务机构如何借助智能工具提升服务的专业性与便捷性?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

HDU 2063过山车 二分图最大匹配 匈牙利算法

这题属于二分图算法的入门题目。 就是要求二分图的最大匹配。求解最大匹配的算法为匈牙利算法。其核心思想就是从左半点集逐个出发寻找增广路径,每找到 一条增广路径,匹配数就加一。可以证明当找不到增广路径是就得到了最大匹配。 详细解释请参阅:点击打开链接   其中,useif[]是在同一次寻找增广路径是有用。主要是由于递归。比如如果之前已用过右点集中的1,下一次就不能再用了。 开始时初始化nu

ON THE WAY TO GEEK 1636

港股十档行情tick数据,包含逐笔成交与买卖委托快照 逐笔记录含成交时间、价格、成交量、成交方向及委托单类型 十档委托快照提供买卖各十个价位的挂单价格与挂单数量,可观察盘口深度变化 分钟数据以一分钟为

港股十档行情tick数据,包含逐笔成交与买卖委托快照。逐笔记录含成交时间、价格、成交量、成交方向及委托单类型。十档委托快照提供买卖各十个价位的挂单价格与挂单数量,可观察盘口深度变化。分钟数据以一分钟为单位,包含开盘价、最高价、最低价、收盘价、成交量及成交额。历史行情覆盖近十五年,提供完整日线csv表格,字段包含日期、开盘价、最高价、最低价、收盘价、成交量、成交额,部分还包含调整因子或前收盘价。所有数据均为非实时历史数据。 数据源:CMES金融数据库

FreeCAD MCP实战:用AI自然语言驱动CAD建模与自动化

在计算机辅助设计(CAD)领域,参数化建模和自动化脚本是提升设计效率的核心技术。其原理在于通过程序化指令控制三维模型的创建与修改,从而将设计意图转化为精确的几何实体。这种技术价值在于显著降低重复性操作成本,实现快速原型迭代和设计探索。在应用场景上,它尤其适用于需要频繁调整尺寸、生成系列化零件或执行规则化建模任务的工程与产品设计。本文聚焦的FreeCAD MCP项目,正是这一理念的先进实践。它通过集成Model Context Protocol(MCP),构建了一个连接Claude AI与FreeCAD的智能

weixin_26913055的博客 727

HDU 1856 More is better 并查集 路径压缩

做了并查集一段时间了。个人觉得利用并查集解题的套路其实很单调。 1、开一个数组记录各个节点的父节点,初始化 2、给出一对关联的数据,查找 3、根据查找结果如果根不属于同一集合则合并 当然,还可以优化。主要是在查找利用递归,使得在回溯时各个节点的父节点都是树的根节点。下次查找就可以 降低查找长度。其次,可以利用一个数组记录每棵树的高度。在合并时将矮树链接到高树上,使得新生成的树尽 量矮。

ON THE WAY TO GEEK 1362

基于ADS1299的8通道脑电采集系统硬件设计实战

生物电信号采集是医疗电子与可穿戴设备中的关键环节,微弱信号的高保真放大与数字化处理直接影响系统性能。高精度模数转换器与低噪声模拟前端设计成为工程实践的核心。ADS1299作为专用生物电测量芯片,集成多通道低噪声放大器与24位Δ-Σ ADC,广泛应用于脑电、心电等生理信号检测。本文基于ADS1299构建8通道脑电采集系统,详细阐述硬件架构、电源与参考设计、输入保护、PCB布局布线、固件SPI配置及数据读取,并结合实测数据分享噪声抑制与调试经验,为EEG采集设备开发提供完整参考。

weixin_29169505的博客 225

HDU 1272小希的迷宫 1325Is It A Tree? 并查集确定图为树

这两题主要是解决一个图是否是树的问题。 有很多细节需要注意。 1、空树也是树。 2、一个图若是树需满足两个条件: ①连通分量为一; ②图中无环,包括自环和非自环。 3、边数+1=顶点数。 以上几点只是针对无向图的,1272题就是解决无向图是否是树的问题。而如果要判断有向图是否是树,还要判断 顶点的入度。满足入度为0的点只有一个,以及入度都不大于1。1325题就是判断有向图是否是树的

ON THE WAY TO GEEK 1311

宽带阻抗匹配的工程实现-第一步,端口驻波仿真

其实阻抗匹配我工作以来经常说,也经常做,但是基本上都是直接在印制板上进行调试。现在想先用仿真软件直接设计出来,才发现很多东西嘴上说容易,想做出来太难了。所以准备写一些文章,记录一下碰到的问题。

pp_0604的博客 2379

深入解析SPLL单相软件锁相环:从SOGI原理到PI系数调优实践

本文深入解析SPLL单相软件锁相环技术,从SOGI原理到PI系数调优实践,详细介绍了其在数字电源设计中的应用。通过数学推导和实际调试经验,帮助工程师快速掌握锁相环的核心参数计算和优化方法,提升电网相位追踪的精确度和响应速度。

weixin_30316097的博客 384
上一篇: HDU 1272小希的迷宫 1325Is It A Tree? 并查集确定图为树
下一篇: HDU 1054 Strategic Game 二分图 最小顶点覆盖
lulipeng_cpp
博客等级 码龄15年 169粉丝 130原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值