HDU 1151 Air Raid 二分图最小边覆盖

DSPF28335:从零到一,实战GPIO与外部中断的嵌入式系统交互设计 本文以德州仪器DSPF28335芯片为例,详细讲解了嵌入式系统中GPIO与外部中断(EXTI)的实战配置方法。通过一个完整的按键控制LED并触发ADC采样的项目,深入剖析了GPIO寄存器配置、三级中断机制(外设-PIE-CPU)以及中断服务函数编写的核心要点,帮助开发者掌握嵌入式交互设计的基石,并提供了关键的避坑指南与调试清单。 阅读详情
题意:在一个城镇,有m个路口,和n条路,这些路都是单向的,而且路不会形成环,现在要弄一些伞兵去巡查这个城镇,伞兵只能沿着路的方向走,问最少需要多少伞兵才能把所有的路口搜一遍。(这个题意摘自题目的Discuss里,@ KaneTiberium)
思路:注意的一点就是如果1->2,1->3,只能走其中一条路,不可以返回再来走,因为要沿着路的方向。题目就是用最少的边去覆盖图的点了。
定理:二分图最小边覆盖=图的顶点数-最大匹配数
最小边覆盖的简单证明:
如果最大匹配为0,二分图最小边覆盖=顶点数(这时候每个点都是独立的。)
每当匹配数加1的时候,(a->b,本来覆盖a,b两个点需要两条边,现在就只需要一条边了),二分图最小边覆盖数减1。

http://acm.hdu.edu.cn/showproblem.php?pid=1151

/*********************************************
    Problem : HDU 1151
    Author  : NMfloat
    InkTime (c) NM . All Rights Reserved .
********************************************/

#include <map>
#include <set>
#include <queue>
#include <cmath>
#include <ctime>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>

#define rep(i,a,b)  for(int i = a ; i <= b ; i ++)
#define rrep(i,a,b) for(int i = b ; i >= a ; i --)
#define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next)
#define cls(a,x)   memset(a,x,sizeof(a))
#define eps 1e-8

using namespace std;

const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5;
const int MAXE = 2e5;

typedef long long LL;
typedef unsigned long long ULL;

struct Edge { //记录边
    int to;
    Edge * next;
}E[MAXE],*EE;

struct Gragh { //记录图的结点
    Edge * first;
}G[MAXN];

int N,M;//二分图左右结点的个数
bool visit[MAXN];
int match[MAXN];//v2中匹配的情况

void addedge(int u,int v) { //加边
    EE->to = v ; EE -> next = G[u].first ; G[u].first = EE ++;
    //EE->to = u ; EE -> next = G[v].first ; G[v].first = EE ++;
}

int T,n,m;

void init() {
    EE = E; N = M = 0;
    cls(G,0);
}

bool find_path(int u) {
    int v;
    repE(p,u) {
        v = p->to;
        if(!visit[v]) {
            visit[v] = 1;
            if(match[v] == -1 || find_path(match[v])) {//v没有匹配或者v可以找到另一条路径
                match[v] = u;
                return true;
            }
        }
    }
    return false;
}

int Max_match() {
    cls(match,-1);
    int cnt = 0;
    rep(i,1,N) {
        cls(visit,0);
        if(find_path(i)) cnt ++;
    }
    return cnt;
}

void input() {
    scanf("%d %d",&n,&m);
    N = n ; M = m;
    int u,v;
    rep(i,1,m) {
        scanf("%d %d",&u,&v);
        addedge(u,v+N);
    }
}

void solve() {
    printf("%d\n",N-Max_match());
}

int main(void) {
    //freopen("a.in","r",stdin);
    scanf("%d",&T); while(T--) {
        init();
        input();
        solve();
    }
    return 0;
}
单细胞测序数据分析——细胞通讯 CellChat cellchat 阅读详情

相关推荐

VECTOR硬件VN1600系列对比:VN1610、VN1611、VN1630A、VN1640A、VN1630log、VN1670

VN16系列说不清道不明的区别和关系

AmorRun的博客 2万+

二分图之最小边覆盖(poj3020)

题目:poj3020 题意:给出一个图,让你用最少的1*2的纸片覆盖掉图中的全部*出现过的地方。基本裸的最小边覆盖。 分析: 最小边覆盖 = 点总数 - 最大匹配 所以就是转化为求最大匹配。 跟前面一道题目非常相似,也是同样的建图方法,奇偶性建图。 #include &lt;cstdio&gt; #include &lt;cstring&gt; ...

weixin_34220963的博客 162

AI 大模型在电商精准营销中的应用

例如,对于用户 A 和用户 B,通过比较他们对共同评价过的商品的评分差异来确定相似度。其中,(Gain(D,a))表示特征(a)对数据集(D)的信息增益,(Ent(D))表示数据集(D)的信息熵,(V)表示特征(a)的取值个数,(D^{v})表示特征(a)取值为(v)的样本子集。其中,(sim(A,B))表示用户 A 和用户 B 的相似度,(I)表示用户 A 和用户 B 共同评价过的商品集合,(R_{A,i})和(R_{B,i})分别表示用户 A 和用户 B 对商品(i)的评分。(三)营销活动效果预测。

alittlehippo的博客 1627

二分图匹配,最小点覆盖,最小边覆盖

定义:对于无向图G=(V,E),若M是E的一个子集,且对于任意V中顶点v,M中最多只能有一条边以v为端点,称M是图G的一个匹配。若顶点v与G的某个匹配M中的某条边相连,则称v由M所匹配,否则称v未被M匹配。 定义:称M是G的一个最大匹配,当且仅当对于G中的任意匹配T,有|M|>=|T|。 定义:对于无向图G=(V,E),V可以切分为两个无交集的子集L和R,使得E中所有边的两端都跨越L和R...

weixin_30763397的博客 427

Modbus 通信协议详解

Modbus是由 Modicon(现为施耐德电气公司的一个品牌)在 1979 年发明的,是全球第一个真正用于工业现场的总线协议。ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。为更好地普及和推动Modbus在基于以太网上的分布式应用,目前施耐德公司已将Modbus协议的所有权移交给 IDA(,分布式自动化接口)组织,并成立了 Modbus-IDA 组织。

Projectsauron 的博客 7万+

别再手动调参了!用Optuna+PyTorch搞定Transformer时序预测超参数(附完整代码)

本文详细介绍了如何利用Optuna和PyTorch实现Transformer时序预测模型的自动化超参数调优。通过贝叶斯优化技术,显著提升单变量时序预测的效率和准确性,并附有完整代码实现。文章涵盖模型架构设计、数据预处理、Optuna调参实战及生产环境部署建议,为开发者提供一站式解决方案。

weixin_33704234的博客 576

二分图中对最小顶点覆盖、最小边覆盖、最大独立集的理解

仅仅用于自己理解,若有共鸣,别太吐槽就行哈~ 首先是匈牙利算法的本质:(图参考了zxy的) 这个图要详细看完,那么刚开始我想的“找小三”实际上就是递归找增广路的过程,如果找到增广路,匹配数就一定可以加一。(代码就不上了,都是一个模板) 理解到这里其实才只是个开始,我想解决的是最大匹配与最小顶点覆盖数、最小边覆盖数、最大点独立集之间的关系是怎么得来的。首先是结论

Iguodala的博客 1万+

AgentFlow:模块化智能体框架与Flow-GRPO强化学习实战解析

在人工智能领域,大语言模型(LLM)与智能体(Agent)技术正推动着自动化任务处理的发展。其核心原理在于通过规划、执行与反馈的循环,使AI系统能够自主调用工具解决复杂问题。这一技术的价值在于突破单一模型的局限性,实现更可靠的多步骤推理。在实际应用中,智能体框架需要处理搜索、代码执行、数学计算等多种场景。本文聚焦的AgentFlow框架,正是通过模块化设计将智能体拆分为规划者、执行者、验证者和生成者四个专家模块,并引入Flow-GRPO强化学习算法进行流程内优化。该框架在搜索增强与工具调用等任务上展现出显著

weixin_42311427的博客 367

二分图之最小路径覆盖

1. 最小边覆盖 最小边覆盖: 边覆盖集:通俗地讲,所谓边覆盖集,就是G中所有的顶点都是E*中某条边的邻接顶点(边覆盖顶点),一条边只能覆盖2个顶点。 注意:在无向图中存在用尽量少的边去“覆盖”住所有的顶点(注意:单独一个点没有与它相连的边,也算作一次边去覆盖这个点),所以边覆盖集有极小与最小的区别。 极小边覆盖:若边覆盖E*中的任何真子集都不是边覆盖集,则称E*是极小边覆盖集。 最小边

码农的一亩三分地 893

AutosarMCAL开发——基于EB MCU驱动

本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 920

嵌入式工程师成长之路(3)——PCB设计

带有目的的学:要知道,PCB板子做出来需要我们给厂家哪些东西,我们设计板子的时候,需要遵循哪些设计规范,防止画好也是块废板子。然后再逐步开始学习画板。

云轩阁 8万+

关于二分图中对最小顶点覆盖、最小边覆盖、最大独立集的总结

参考博客 http://blog.youkuaiyun.com/flynn_curry/article/details/52966283概念: 最大匹配:二分图中边集的数目最大的那个匹配; 最小顶点覆盖:选取最少的点数,使这些点和所有的边都有关联(把所有的边的覆盖),叫做最小点覆盖。 最小边覆盖:用尽量少的不相交简单路径覆盖有向无环图(DAG)G的所有顶点; 最大独立集:在一

veoery的博客 826

浅聊开关电源6:大学生电赛(电源类)之LCL并网滤波器设计(PCB设计,STM32F4xx程序与Simulink仿真)

关于LCL并网滤波器设计的一些小分享

xjtuymh的博客 3651

hdu1151 Air Raid(最小边覆盖)

http://acm.hdu.edu.cn/showproblem.php?pid=1151 题意:给你n个城镇和m条边,边是单向的且图中没有环。选择一些小兵空降在城镇上,小兵可以沿着单向边走到路的尽头,问最少需要多少个小兵可以遍历所有的顶点。 思路:最小边覆盖,用尽量少的不相交简单路径覆盖有向无环图(DAG)G的所有顶点。依旧是定理[金馆长哭],怎么这几道题都是定理啊,想吐槽。

Iguodala的博客 432

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HDU1151:Air Raid(最小边覆盖)

Air Raid Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6528Accepted Submission(s): 4330 题目链接:http://acm.hdu.edu.cn/showproblem.php?...

dft539533的博客 141

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Air Raid HDU 1151

题意 给定n个路口 加上一些单向路 求遍历完所有路口需要多少人 人是空降的 哪里都可以作为起点 求 最小边覆盖 (用最少的边覆盖所有的点) 也叫最小路径覆盖(更形象) 也叫二分图的最大独立集合 最小边覆盖==所有点-最大匹配数(匈牙利算法) 理解: 如果没有路 则要n个人 多一条路 则可以减一个人 . #include<bits/stdc++.h> us...

weixin_30915275的博客 111

hdu_1151 Air Raid 最小边覆盖

//最小边覆盖=N-二分图最大匹配  #include #include int map[1000][1000]; int mark[1000]; int link[1000]; int m,n; int find(int k) {  int i;  for(i=1;i  {   if(mark[i]==0&&map[k][i])   {    mark[i]=1;

飞雪---晨 574

HDU 1151 Air Raid

题目大意:就是在单向 的街道上,问要有几个士兵才能把所有的街道的交叉点(节点)访问完,因题目说是无环图(the town's streets form no cycles)所以可以用最小路径覆盖来做 思路:因为是有向无环图,所以求以最少的人来访问全部的交叉点,就可以用最小路径覆盖做,做法:把出发点和终点都拆成2个节点,利用出发点和终点进行匹配(数组的含义,因为是以所有的交叉口的数目来开数组的),

muximuxi_kgsecond的专栏 436

HDU 1151 Air Raid(最小路径覆盖)

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

Rain 362

「专题训练」Air Raid(HDU-1151)

题目 在一个城市里有\(n\)个地点和\(k\)条道路,道路是无环的(也就是说一定可以二分染色——回路长度为偶数0),现在伞兵需要去n个地点视察,只能沿着路的方向走,问最少需要多少伞兵。 分析 这是什么问题?找出最少的边,访问所有的点——二分图的的最小路径覆盖。 那么对于一个最大匹配,它能覆盖(2*最大匹配)个点,剩下的点都需要单独一条边覆盖,从而设匹配数为\(k\),覆盖数为\(p\),有\[n...

weixin_30263073的博客 228

浅显易懂二分图-最大匹配,最小路径覆盖,最小点覆盖

正式的定义,网上一大把,但他们的作用是让人看不懂…… 二分图:把点分成两个集合X,Y,使得图的边的两个端点总是分别落在X和Y上,不会有X中的点连向X中的点,不会有Y中的点连向Y中的点 匹配:实质上是二分图中的一个边集,边集中出现的点不会重合,比如有a-b了,就不会有a-c了,要是有了a就重合了 最大匹配:这个边集的数目最大的那个匹配   匈牙利算法—— 增广路:一条在X和Y之间交错的路

Jackyguo1992的专栏 4737

HDU 3585 maximum shortest distance 二分+最大团

题意:n个点中找k个点使得它们最短距离最长。思路:二分,二分这个距离。(如果一条边的长度>=这个距离,就可以连边。)然后看看最大团的大小,比k大还是比k小。 http://acm.hdu.edu.cn/showproblem.php?pid=3585 /********************************************* Problem : HDU 3585

NM的专栏 751

HDU 1507 Uncle Tom's Inherited Land* 二分图最大匹配

题意:有N*N的地,其中有些是水池,如果空地形成1*2的大小就可以卖掉。问:最多可以卖掉多少块空地?输出每块空地在N*N矩阵中的位置。思路:(i+j)是奇数的作为X部,(i+j)是偶数的作为Y部,空格相邻就连一条线,找最大匹配即可。 http://acm.hdu.edu.cn/showproblem.php?pid=1507 /**********************************

NM的专栏 596

HDU 1435 Stable Match 稳定婚姻

思路:就是一个简单的稳定婚姻问题的模型,把距离近的,容量大的排在见面。然后就是发射方一次次就追求,接收方选择接受还是不接受。 http://acm.hdu.edu.cn/showproblem.php?pid=1435 /********************************************* Problem : HDU 1435 Author : NMflo

NM的专栏 572

HDU 1530 Maximum Clique 最大团

题意:给一个图,找图中的最大团,并输出最大团的顶点数。思路:暴搜。dfs判断每个点在或者不在。加一个剪枝。就是如果剩下的节点+当前已经搜到的最大团的节点<=已经找到的最好结果,就停止搜索。这个剪枝效率蛮低的。 3510ms过的。 http://acm.hdu.edu.cn/showproblem.php?pid=1530 /************************************

NM的专栏 544

HDU 1914 The Stable Marriage Problem 稳定婚姻问题 (接着水)

恩,也是水题。我还是改的上一题代码。QwQ。注意:每个人喜爱的人不一定是n。所以不能直接按n算。 http://acm.hdu.edu.cn/showproblem.php?pid=1914 /********************************************* Problem : HDU 1914 Author : NMfloat InkTime

NM的专栏 536
上一篇: HDU 1150 二分图最小点集覆盖
下一篇: HDU 1498 50 years, 50 colors 二分图最小点覆盖
_NMfloat_
博客等级 码龄12年 7粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值