精华内容
下载资源
问答
  • 二分图的定义:二分图是这样的一个图,它的顶点可以分为两个集合X和Y。所有的边关联的两个顶点中,恰好一个属于集合X,一个属于集合Y。 二分图的匹配:给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两...

    二分图的定义:

    二分图是这样的一个图,它的顶点可以分为两个集合X和Y。所有的边关联的两个顶点中,恰好一个属于集合X,一个属于集合Y。

    二分图的匹配:

    给定一个二分图G,M为G边集的一个子集,如果M满足当中的任意两条边都不依附于同一个顶点,则称M是一个匹配。

    经典模型:

    USACO题库:4.2.2 The Perfect Stall完美的牛栏

    意思有n头奶牛,m个牛栏,每个牛栏只能供一头牛休息,牛们只会在自己喜爱的牛栏里休息,问你最多有几头牛能够休息。

    明显这是一个二分图,要我们求最大匹配数。

    匈牙利算法

    匈牙利算法就是每次都暴力增广,最坏情况是O(n^3),但是相比最大流实现优点是复杂度较低。

    #include<cstdio>
    #define fo(i,x,y) for(int i=x;i<=y;i++)
    using namespace std;
    const int maxn=205;
    int n,m,x,y,t,ans,bz[maxn],d[maxn],a[maxn][maxn];
    bool find(int x){
        fo(i,1,a[x][0]){
            int y=a[x][i];
            if(bz[y]!=t){
                bz[y]=t;
                if(!d[y] || find(d[y])){
                    d[y]=x;
                    return 1;
                }
            }
        }
        return 0;
    }
    int main(){
        scanf("%d %d",&n,&m); 
        fo(i,1,n){
            scanf("%d",&a[i][0]);
            fo(j,1,a[i][0])
                scanf("%d",&a[i][j]);
        }
        fo(i,1,n)
            t=i, ans+=find(i);
        printf("%d",ans);
    }
    展开全文
  • nginx default_server 定义匹配规则

    千次阅读 2019-08-02 17:47:27
    ginx default_server 指令可以定义默认 server 去处理一些没有匹配到 server_name 请求,如果没有显式定义,则会选取第一个定义的 server 作为 default_server。 在了解到如上规则后,我们可以捕获未做绑定...

    ginx 的 default_server 指令可以定义默认的 server 去处理一些没有匹配到 server_name 的请求,如果没有显式定义,则会选取第一个定义的 server 作为 default_server。

    在了解到如上规则后,我们可以捕获未做绑定的域名访问或直接IP访问,做重定向到403页面等处理。

    1、nginx 隐式的 default server

    http {
        # 如果没有显式声明 default server 则第一个 server 会被隐式的设为 default server
        server {
            listen 80;
            server_name _; # _ 并不是重点 __ 也可以 ___也可以
            return 403; # 403 forbidden
        }
        
        server {
            listen 80;
            server_name www.a.com;
            ...
        }
        
        server {
            listen 80;
            server_name www.b.com;
            ...
        }
    }

    很多人复制粘贴广泛传播 server_name 要设为 '_',其实一毛钱的关系也没有。'_' 只是作为一个和业务域名无关的请求回收服务而已,如果我们线上的业务都是明确的业务域名访问,那泛解析造成的一些非业务域名或ip访问都会被这个 sever 回收处理。

    在没有显式定义 default server 时,nginx 会将配置的第一个 server 作为 default server,即当请求没有匹配任何 server_name 时,此 server 会处理此请求。所以,当我们直接使用 ip 访问时会被交给此处定义的第一个 server 处理,403 forbidden。

    2、显示的定义一个 default server

    http {
        server {
            listen 80;
            server_name www.a.com;
            ...
        }
        
        server {
            listen 80;
            server_name www.b.com;
            ...
        }
        
        # 显示的定义一个 default server
        server {
            listen 80 default_server;
            server_name _;
            return 403; # 403 forbidden
        }
        
    }

    建议显示指定 default server,因为我们在配置虚拟主机或多业务时,会存有多个 server 配置文件,如果使用隐式方式选取第一个被载入的 server 作为 default server 的话,我们还要时刻去确认谁是被第一个载入的...制造风险...

    3、直接指定server_name 为 ip(只能禁止ip访问)

    http {
        server {
            listen 80;
            server_name www.a.com;
            ...
        }
        
        server {
            listen 80;
            server_name www.b.com;
            ...
        }
        
        # 直接指定 ip server_name
        server {
            listen 80;
            server_name xxx.xxx.xxx.xxx;
            return 403; # 403 forbidden
        }
        
    }

    以上三种方式都可禁止 ip 直接访问,且 1,2 同时可以禁止未绑定域名的访问(比如你泛解析了主域名)。

    小记:nginx 批量载入配置 conf 时会按 ascii 排序载入,这就会以 server_a.conf server_b.conf server_c.conf 的顺序载入,如果没有生命 default_server 的话,那 server_a 会作为默认的 server 去处理 未绑定域名/ip 的请求。

    展开全文
  • Python学习路线:定义实现最短匹配的正则表达式 1、需求 我们正在尝试用正则表达式对文本模式做匹配,但识别出来的是最长的可能匹配。相反,我们想将其修改为最短的可能匹配。 2、解决方案 这个问题通常会在匹配的...

    Python学习路线:定义实现最短匹配的正则表达式

    Python学习路线:定义实现最短匹配的正则表达式
    1、需求

    我们正在尝试用正则表达式对文本模式做匹配,但识别出来的是最长的可能匹配。相反,我们想将其修改为最短的可能匹配。

    2、解决方案

    这个问题通常会在匹配的文本被一对开始和结束的分隔符包起来的时候出现(例如带引号的字符串),为了说明这个问题,请看下面实例:

    import re
    str_pat=re.compile(r'\"(.*)\"')
    text1='mark say "love"'
    text2='mark say "love",jingjing say "yes"'
    print(str_pat.findall(text1))
    print(str_pat.findall(text2))
    

    结果:

    ['love']
    ['love",jingjing say "yes']
    

    在这个例子中,模式r’"(.*)"'尝试去匹配包含在引号中的文本。但是,*操作符在正则表达式中采用的是贪心策略,所以匹配过程是基于找出最长的可能匹配来进行的。所以上面才会出现【love",jingjing say "yes】这个匹配结果。

    要解决这个问题,只要在模式中的*操作符后面加上?修饰符就可以了。

    示例:

    import re
    str_pat=re.compile(r'\"(.*?)\"')
    text1='mark say "love"'
    text2='mark say "love",jingjing say "yes"'
    print(str_pat.findall(text1))
    print(str_pat.findall(text2))
    

    结果:

    ['love']
    
    ['love', 'yes']
    

    这么做使得匹配过程不会以贪心方式进行,也就会产生最短的匹配了。

    3、分析

    本节提到了一个当编写还有句点【.】字符的正则表达式常会遇到的问题。为了解决最长匹配问题,让匹配变为最短匹配,需要在*或+后加上一个【?】。

    后面的Python学习路线在下期为大家更新!

    展开全文
  • Automapper 功能强大,但是只能识别和匹配简单类型且同名变量,遇到自定义类型,及复杂类型如果依旧使用最简单的匹配法则就会弹出 【AutoMapper.AutoMapperMappingException】异常 【之后会讲如何找到关键性...

    Automapper 功能强大,但是只能识别和匹配简单类型且同名的变量,遇到自定义类型,及复杂类型如果依旧使用最简单的匹配法则就会弹出

    AutoMapper.AutoMapperMappingException】的异常

    【之后会讲如何找到关键性错误】


    例:转化目标是:

    namespace SchoolModel
    {
        public class schoolModel
        {
            public StudentModel students;
            public TeacherModel Teachers;
            public List<OtherModel> others;
            public string one;
            public string two;
    
        }
    
        public class OtherModel
        {
            public NameModel name;
            public string one;
            public string two;
    
        }
    
        public class TeacherModel
        {
            public NameModel name;
            public string one;
            public string two;
        }
    
        public class StudentModel
        {
            public NameModel name;
            public string one;
            public string two;
        }
    
        public class NameModel
        {
            public string firstName;
            public string lastName;
        }
    }
    


    转化来源是:


    namespace School
    {
        public class school
        {
            public Student students;
            public Teacher Teachers;
            public List<Other> others;
            public string one;
            public string two;
    
        }
    
        public class Other
        {
            public Name name;
            public string one;
            public string two;
    
        }
    
        public class Teacher
        {
            public Name name;
            public string one;
            public string two;
        }
    
        public class Student
        {
            public Name name;
            public string one;
            public string two;
        }
    
        public class Name
        {
            public string firstName;
            public string lastName;
        }
    }
    

    其中包含着三层的自定义结构,还有List类型

    唯一只包含简单类型的事Name,所以能直接使用匹配的是Name


    同时如果是这种比较复杂的结构体建议使用configuration来定义mapper规则


    <pre name="code" class="csharp">    class MapSchool:Profile
        {
            protected override void Configure()
            {
                var map = Mapper.CreateMap<school, schoolModel>();
                map.ForMember(sou => sou.Teachers, dto => dto.MapFrom(src => src.Teachers))
                    .ForMember(sou => sou.others, dto => dto.MapFrom(src => src.others))
                    .ForMember(sou => sou.students, dto => dto.MapFrom(src => src.students));
    
                Mapper.CreateMap<Name, NameModel>().ConstructUsing(s => new NameModel
                {
                    firstName = s.firstName,
                    lastName = s.lastName
                });
    
            }
    }

    
    
    如上代码所示,在school这一层就只需要匹配好在school这一层的代码即可,同时,由于teacher,和student中都包含这Name的元素,mapper无法识别,所以同时也要定义好Name=>NameModel的转换规则。


    同理,不管层级多复杂,只要在Configure()中定义好Mapper无法识别的类型即可。


    在应用时,直接添加Profigure就可以应用自定义的匹配方法了

            public void Main()
            {
                school schoolTemp = new school()
                {
                    // 赋值
                };
                Mapper.CreateMap<school, schoolModel>();
                Mapper.AddProfile(new MapSchool());
                schoolModel schoolModelTemp=Mapper.Map<school, schoolModel>(schoolTemp);
            }






    展开全文
  • 定义iptables/netfilter的匹配模块

    千次阅读 2009-09-13 00:30:00
    本文档Copyleft归...msn: yfydz_no1@hotmail.com来源: http://yfydz.cublog.cn1. 前言Linux中netfilter提供了一个防火墙框架,具有很好扩展性,除了自带模块之外,用户可以根据自己需求定义防火墙模块
  • 今晚在整MFC,遇到了以下问题。 d:\我文档\visual studio 2008\projects\virtualosc\arraylisttype.h(171) : error C...::maxListSize”: 无法将函数定义与现有声明匹配1> d:\我文档\visual studio 20...
  • 图像匹配、配准和融合的定义区别

    千次阅读 2011-10-02 16:52:36
    1 图像匹配是指在一个大图像区域寻找一个合适子区域,与目标相似。其实有时候图像匹配也可以认为是一种图像配准。 2 图像配准指两个图像坐标系之间变换矩阵计算,可以为刚性配准或者非刚性配准,也有同模态...
  • 今晚在整MFC,遇到了以下问题。 d:\我文档\visual studio 2008\projects\virtualosc\arraylisttype.h(171) : ...::maxListSize”: 无法将函数定义与现有声明匹配1> d:\我文档\visual studio 2008\proj...
  • 在我为Microsoft.Web.WebPages.OAuth引用了不匹配的DLL文件之后,这导致了相同的错误。 为了解决这个问题,我做了一个 Update-Package 并清理了解决方案以进行全面重建。 那对我有用,是一种懒惰的方式,...
  • (1.2.3)串结构定义和模式匹配

    千次阅读 2015-03-13 14:21:31
    (1)顺序串结构定义 typedef struct{ char ch[maxsize]; int length; }seqstring; (2) 零个字符串为空串;一到多个空格组成串为空格串。 s='a1a2a3a4a5a6a7a8a9' s为 a1 a2 a3 a4 a5 a6 a7 a8 a9 \0 占据1...
  • 这几天在写一个项目时候报错不匹配 结果发现时 我sql语句没有将全部列名都插入进来 String sql = "insert into user1 values(?,?,?,?,?,?,?,?,?,?,?,?)"; qr.update(sql, user1.getUid() , user1.getUsername...
  • 如图进行查询时,会提示错误:“列名或所提供值数目与表定义匹配” 网上查了下是插入数目不匹配,即我只插入了一条信息,而被插入表有两列数据原因。 但是我定义的SortID列是主键,唯一标示,我觉得此列不...
  • 问题描述: ...列名或所提供值数目与表定义匹配。 问题分析: 1、insert语句没指定列时,默认插入全部列,但是插入列数量和表格列数量不一致,导致了报错。 解决办法:插入时指定列。 ...
  • 最大二分匹配中 增广路定义

    千次阅读 2013-03-07 10:07:32
    若P是图G中一条连通两个未匹配顶点的路径,并且属于M的边和不属于M的边(即已匹配和待匹配的边)在P上交替出现,则称P为相对于M的一条增广路径。 由增广路的定义可以推出下述三个结论: 1-P的路径个数必定为奇数,...
  • 二分图最大匹配问题

    千次阅读 2018-03-17 23:14:34
    1.定义 二分图:   将一个图的所有顶点划分为两个不相交集U和V,使得图中的每一条边的顶点分别属于点集合U和...  图中匹配的定义是指,这个图的一个边的集合,集合中任意两条边都没有公共的顶点,则称这个边...
  • 问题描述:Newtonsoft.Json找到程序集清单定义与程序集引用不匹配。   解决方法:通过Nugret 更新josn包。(引用了多个josn库,版本不一致导致问题。)...
  • 的定义:是由零个或多个字符组成的有限序列,又叫字符串。   一般记为 s=“a1a2a3...an"(n&gt;=0),其中,s是字符串的名称,用双引号括起来的字符序列是串的值,注意引号不属于串的内容。ai可以是...
  • jdbc调用sqlserver存储过程,抛出异常:**com.microsoft.sqlserver.jdbc.SQLServerException:列名或所提供值数目与表定义匹配**。 以下是存储过程脚本:(调用时type传1,执行查询动作) CREATE PROCEDURE [dbo]...
  • 申请内存多处失败。调试报Critical error detected...后来发现是这个.h文件有一个不匹配的边界对齐,导致的。 #pragma pack(1)  #define MAX_FRM_LEN (1024*2048) #define MAX_SPSPPS_LEN 8192 #define PUSH_ASY...
  • 最近刚安装完VS2010旗舰版后发现使用F12快捷键后不会直接跳转到定义而是在查找符号结果窗口出现多个匹配项,一直无法解决。安装完VS之后我又直接安装了VAssistX插件,所以暂时不确定是否是由VAssistX插件造成。...
  • SQL插入错误: 列名或所提供值数目与表定义匹配解决方法,INSERT INTO 语句用于向表格中插入新行。 1、语法:INSERT INTO 表名称 VALUES (值1, 值2,....) 这里我们需要指定所要插入数据列: INSERT INTO ...
  • 串-定义和模式匹配算法

    千次阅读 2017-03-12 21:38:59
    5.2 串的定义 今天我们就是来研究"串"这样的数据结构。先来看定义。 串( string )是由零个或多个字符组成的有限序列,又名叫字符串 。 一般记为s= "a1a2......an"(n>0),其中,s是串的名称,用双引号(有些书中也...
  • 插入错误: 列名或所提供值数目与表定义匹配。 在做插入数据操作时,提示错误信息:插入错误: 列名或所提供值数目与表定义匹配。 数据库表中有三个个字段:id,name,pwd,执行SQL语句如下: ...
  • ASPNET: 请确保此代码文件中定义的类与“inherits”属性匹配 今天,写个ascx页时候,出现了这么个错误。 解决办法就是Inherits里加上你用命名空间名字就可以了。。。 。。。 编译ASP.NET时,提示...
  • 引用对不上 dll版本不一致导致 统一一下引用即可
  • 假设现在有一大堆C源文件,你希望从中找到一个函数定义的源代码,可是这些文件被放在不同的文件夹里,属于不同的工程项目,并且从...原理是这样的,遍历所有的C/C++文件的每一行代码,通过正则表达式匹配函数的定义
  • 的定义:是由零个或多个字符组成的有限序列,又叫字符串。 一般记为 s=“a1a2a3…an"(n>=0),其中,s是字符串的名称,用双引号括起来的字符序列是串的值,注意引号不属于串的内容。ai可以是字母、数字或者其他...
  • 模式匹配

    2011-10-31 21:55:37
    模式匹配的定义:主串s中寻找子串t 的过程,子串t 称为模式。如果匹配成功,则返回t在s中第一次出现的位置。如:主串s:“ababc”匹配子串t:“abc”的结果为2(下标从0开始)。 实现算法: 1. BF算法 todo。。。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,375
精华内容 10,550
关键字:

匹配的定义