TTTTTTTTTTTTTTTT hdu 5727 Necklace 阴阳珠 二分图匹配+暴力全排列
Necklace
Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2462 Accepted Submission(s): 775
For each test case, the first line contains two integers N(0≤N≤9),M(0≤M≤N∗N), descripted as above.
Then M lines followed, every line contains two integers X,Y, indicates that magic gem X with Yang energy will become somber adjacent with the magic gem Y with Yin energy.
1 1
3 4
1 1
1 2
1 3
2 1
1
- #include <cstdio>
- #include <iostream>
- #include <algorithm>
- #include <cstring>
- #include <iostream>
- #include <cmath>
- #include <queue>
- #include <vector>
- #define MM(a,b) memset(a,b,sizeof(a));
- #define inf 0x3f3f3f3f
- using namespace std;
- typedef long long ll;
- #define CT continue
- #define SC scanf
- const int N=1e5+10;
- int f[50][50],a[50],match[50],used[50];
- vector<int> G[50];
- int n,m,u,v;
- void add_edge(int u,int v)
- {
- G[u].push_back(v);
- G[v].push_back(u);
- }
- bool dfs(int u)
- {
- used[u]=1;
- for(int i=0;i<G[u].size();i++){
- int v=G[u][i];
- int w=match[v];
- if(w<0||(!used[w]&&dfs(w))){
- match[u]=v;
- match[v]=u;
- return true;
- }
- }
- return false;
- }
- int bi_match()
- {
- MM(match,-1);
- int res=0;
- for(int i=1;i<=n;i++)
- if(match[i]<0){
- MM(used,0);
- if(dfs(i)) res++;
- }
- return res;
- }
- int main()
- {
- while(~SC("%d%d",&n,&m))
- {
- MM(f,0);
- for(int i=1;i<=m;i++){
- SC("%d%d",&u,&v);
- f[u][v]=1;
- }
- if(n==0||m==0){
- printf("0\n");
- CT;
- }
- int ans=0;
- for(int i=1;i<=n;i++) a[i]=i;
- a[n+1]=a[1];
- do{
- for(int i=1;i<=2*n;i++) G[i].clear();
- for(int u=1;u<=n;u++) {
- for(int j=1;j<=n;j++){
- int pre=a[j],lat=a[j+1];
- if(!f[u][pre]&&!f[u][lat])
- add_edge(u,j+n);
- }
- }
- ans=max(ans,bi_match());
- }while(next_permutation(a+2,a+n+1));
- printf("%d\n",n-ans);
- }
- return 0;
- }
分析:全排列一下阴珠子形成一个环,然后对于形成的每个位置,如果该位置可以放下当前枚举的阳珠子,就连接一条边,那么能不变质的最大阳珠子个数,就是二分图的足最大匹配数。
易错点:
- int v=G[u][i];
- int w=match[v];
- if(w<0||(!used[w]&&dfs(w))){
- match[u]=v;
- match[v]=u;
- return true;
- }
把这个地方写成了match[v]<0||!used[v]&&dfs(v);悲剧的wa了好几发,其实应该是w=match[v]来匹配的
TTTTTTTTTTTTTTTT hdu 5727 Necklace 阴阳珠 二分图匹配+暴力全排列的更多相关文章
- HDU 5727 Necklace 环排+二分图匹配
这是从山东大学巨巨那里学来的做法 枚举下黑色球的排列总数是8!,然后八个白球可选的位置与左右两个黑球存不存在关系建图就行 这是原话,具体一点,每次生成环排,只有互不影响的才连边 最后:注重一点,n个数 ...
- hdu 5727 Necklace dfs+二分图匹配
Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N mag ...
- hdu 5727 Necklace 二分图匹配
题目链接 给2*n个珠子, n<=9, n个阴n个阳. 然后将它们弄成一个环, 阴阳交替.现在给你m个关系, 每个关系给出a, b. 如果阳a和阴b挨着, 那么a就会变暗. 问你最小变暗几个阳. ...
- HDU 5727 Necklace(二分图匹配)
[题目链接]http://acm.hdu.edu.cn/showproblem.php?pid=5727 [题目大意] 现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环,已知有些阴珠子和阳 ...
- HDU 5727 Necklace ( 2016多校、二分图匹配 )
题目链接 题意 : 给出 2*N 颗珠子.有 N 颗是阴的.有 N 颗是阳的.现在要把阴阳珠子串成一个环状的项链.而且要求珠子的放置方式必须的阴阳相间的.然后给出你 M 个限制关系.格式为 ( A.B ...
- HDU 5727 - Necklace
题意:( 0 <= n <= 9 ) 现在有n颗阴珠子和n颗阳珠子,将它们阴阳相间圆排列构成一个环, 已知有些阴珠子和阳珠子不能放在相邻的位置,否则这颗阳珠子就会失去功效, ...
- hdu 3829 Cat VS Dog 二分图匹配 最大点独立集
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others) Prob ...
- HDU 5727 - Necklace - [全排列+二分图匹配][Hopcroft-Karp算法模板]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 Problem DescriptionSJX has 2*N magic gems. ...
- HDU 5727 Necklace(全排列+二分图匹配)
http://acm.split.hdu.edu.cn/showproblem.php?pid=5727 题意:现在有n个阳珠子和n个阴珠子,现在要把它们串成项链,要求是阴阳珠子间隔串,但是有些阴阳珠 ...
随机推荐
- ASP.NET跨平台、分布式技术架构技术栈概览 (迄今为止最全的.NET技术栈)
今天有个学技术的小兄弟问我,现在这么多的技术我要学哪个?我说你根据岗位来学,学好了哪一门都可以在社会上立足,如今已经早已不是我们当年学习IT时候那么单纯了,给他讲了很多,发现现在的技术栈变得层次复杂且 ...
- 20190804-Python基础 第二章 列表和元组
容器,Python支持一种数据结构的基本概念(容器,基本上就是可包含其他对象的对象.) 两种主要的容器是:序列(如列表和元组)和映射(如字典) Ps: 列表与元组区别,列表可修改,元组不能. 对序列的 ...
- 【01字典树】hdu-5536 Chip Factory
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5536 [题意] 求一个式子,给出一组数,其中拿出ai,aj,ak三个数,使得Max{ (ai+aj ...
- varnishlog、Varnishstat详解
Varnish将日志记录到共享内存片段,而不是记录到一个普通文件中.当记录到内存片段的最后处,会再从头开始记,覆写老数据.这比记录到文件要快的多,不需要磁盘空间.Varnishlog是一个用来查看Va ...
- image的路径写法格式
if (MapGrid.Visibility == Visibility.Visible) { this.MapGrid.Visibility = Visibility.Collapsed; ...
- Angular 变更检测
angular 的钩子函数有 content 和 view , Docheck 子控件中有属性变化的时候,父组件的 Docheck content view 这3个会依次执行,即使这个属性不在 ...
- 梯度直方图(HOG,Histogram of Gradient)
1.介绍 HOG(Histogram of Oriented Gradient)是2005年CVPR会议上,法国国家计算机科学及自动控制研究所的Dalal等人提出的一种解决人体目标检测的图像描述子,该 ...
- springboot 集成 dubbo(一)简介
一.简介 1,springboot 是 一款快速开发的框架,减少了开发人员对配置文件的操作.采用一些注解来取代xml配置文件. 注解包含预先封装的注解和开发人员自定义注解.同时使用Maven.Grad ...
- wrbstrom使用
使用webstrom时遇到Firefox浏览器打不开问题,是webstrom未找到你Firefox的安装路径下面为大家提供解决方法: 文件--->设置--->工具--->web浏览器 ...
- scrapy增量爬取
开始接触爬虫的时候还是初学Python的那会,用的还是request.bs4.pandas,再后面接触scrapy做个一两个爬虫,觉得还是框架好,可惜都没有记录都忘记了,现在做推荐系统需要爬取一定的 ...