首页 > 其他分享 >P3386 【模板】二分图最大匹配

P3386 【模板】二分图最大匹配

时间:2023-12-20 20:23:11浏览次数:46  
标签:二分 50005 vis int P3386 now 模板

原题链接

洛谷题解很详细,自己写了些理解在代码注释里

代码

#include<bits/stdc++.h>
using namespace std;
int atch[50005]={0};
int vis[50005]={0};
vector<int> G[505];
int weiy(int now)//让now在他的“仓库”里按顺序找下一个能连的右点,找得到返回1,找不到返回0
{
    vis[now]=1;
    for(int i=0;i<G[now].size();i++)//为什么要全部遍历呢?因为有可能一开始霸占我仓库的人明明自己还有多余的仓库却还要来霸占我的仓库,可以让他滚蛋
    {
        int next=G[now][i];
        if(vis[atch[next]])continue;
        if(!atch[next])//接下来分为三种情况,第一种,这个右点没人连,那我就直接连了
        {
            atch[next]=now;
            return 1;
        }
        else if(!vis[atch[next]]&&weiy(atch[next]))//第二种,这个点有人连,但是这个右点连接的左点可以滚蛋,即所连接的左点能不能找到下一个能连的右点。
        {
            atch[next]=now;
            return 1;
        }
        //这个右点现在连的左点动不得,我只能放弃。
    }
    return 0;//不return1就return0
}
int main()
{
    int n,m,e;
    cin>>n>>m>>e;
    for(int i=1;i<=e;i++)
    {
        int x,y;
        cin>>x>>y;
        G[x].push_back(y);
    }

    int ans=0;
    for(int i=1;i<=n;i++)
    {
        memset(vis,0,sizeof vis);//确保每一次每个人最多滚蛋一次,一次足矣
        ans+=weiy(i);//一个一个来
    }
    cout<<ans;
    return 0;
}

标签:二分,50005,vis,int,P3386,now,模板
From: https://www.cnblogs.com/pure4knowledge/p/17917416.html

相关文章

  • 【misc】[HNCTF 2022 WEEK2]calc_jail_beginner_level4(JAIL) --沙盒逃逸,python模板注
    查看附件信息这里禁用了__import__,直接导致了help()函数和breakpoint()函数没法使用,并且还过滤了关键字符,这里考虑python模板注入,但是这里还过滤chr(),这里可以使用bytes函数payload如下:().__class__.__base__.__subclasses__()[-4].__init__.__globals__['system']('sh')......
  • VUE3学习基础之模板语法
    我的vue3学习之路总是学学停停,最开始在18年开发微信小程序,就发现小程序和vue的语法有些相似,然后就去看了vue2的文档,随后忙其它的事情就丢下了。直到22年又开始捡起来vue3,有了组合式api,语法简明很多,然后又不知道忙什么丢下。。。前段有些空时间,就把vue3的学习整理下,使用vite构建......
  • Python中配置Excel导出模板
    定义Excel列对象classExcelColumn:"""定义Excel中的列参数:name(str):列的名称。width(int|None,可选):列的宽度。默认为None。required(bool,可选):指示列是否必需。默认为False。mapping_factory(Callable......
  • 【洛谷】P1678 烦恼的高考志愿 (二分)
    题目描述在这里:P1678这道题用二分的思路就很容易想出,先把学校分数排好序,根据不满意度的定义,我们只需要每次找到第一个大于学生成绩的学校分数,然后再和最后一个小于学生分数的院校分数分别与学生成绩做差再打绝对值进行比较,取最小的一个累加到ans里就好啦代码如下#include<iostr......
  • 设计模式—模板模式
    介绍代码游戏模板类定义一个游戏模板虚类Game,抽象并规范好游戏的进行流程publicabstractclassGame{abstractvoidinit();abstractvoidstartPlay();abstractvoidendPlay();//模板publicfinalvoidplay(){//初始化......
  • 【洛谷】P1024 [NOIP2001 提高组] 一元三次方程求解 (二分)
    题目描述见此:P1024如何求一个方程的根呢qwq首先,根是什么,函数y=f(x)有零点⇔方程f(x)=0有实数根⇔函数y=f(x)的图象与x轴有交点。回顾我们高一学过的一个定理:零点存在性定理:如果函数y=f(x)在区间[a,b]上的图象是连续不断的一条曲线,并且有f(a)·f(b)<0,那么,函数y=f(x)在区间(a,b)......
  • vue中@param 常用注释模板
    /***获取事件在列表中的位置*@paramcontext*@paramcallback*@private*/_evIndex(event,context,callback){letindex=-1;for(leti=0;i<=event.length;i++){if(event[i].context===contex&&event[i].callback===callback){......
  • 【洛谷】P1873 [COCI 2011/2012 #5] EKO / 砍树 (二分)
    题目描述见:P1873思路比较明确qwq因为答案显然满足单调性:当x超过某个数一定是错的(收集的木材大于m),而小于x一定是对的,并且x是从0一直递增。故我们只需二分法找到x。直接看代码吧qwq精髓是check函数直接模拟题目要求ww#include<iostream>usingnamespacestd;#defineMAXN100......
  • [LeetCode] LeetCode704. 二分查找
    题目描述思路基础二分查找模板的考察。方法一:classSolution{publicintsearch(int[]nums,inttarget){if(nums==null||nums.length==0)return-1;intleft=0,right=nums.length-1;while(left<=right){......
  • 局部最小问题(二分查找)
    二分查找局部最小问题思路来源一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础笔记内容问题描述:对于一个数组,相邻值不等。查找出该数组中满足局部最小的值。局部最小:x[0]<x[1]2x[n-1]<x[n-2]x[i-1]>x[i]&&x[i+1]>x[i]算法思路:首先检测......