这题竟然把我卡了好久、、

很好的延续了昨天的状态、

一开始看到制约条件就知道可以跑dfs确定关系,

根据不同集合的关系选出最大能两两互达的集合

所以是最大独立团、、这可是np-hard问题、、

就T+M,毕竟2^n

在优化暴力无方之后智穷了 、

然而题解说这是二分图的最大独立团、、所以可以跑网络流或匈牙利      (⊙ω⊙) ?

所以这两个东西有什么关系?

那么什么样的最大独立团问题可以转化成二分图的最大独立团,什么只能是np-hard?

呵呵,其实除非巧合,不然最大独立团的问题不可能转化成二分图的、、

其实能用二分图最大独立团解决的问题,一般都是一些异或、选择的关系

拿此题来说:

如样例,可以得到一个图:

可知,如果选了1,则2不能被选,3、4可以被选

如果选了2,则1、 3 、4不能被选

如果选了3,则2 、4不能被选,1可以被选

如果选了4,则3、2不能被选,1可以被选

这是一个非即异或的关系,

由于我们是让被选的尽量多,所以这就是一个二分图最大独立团问题 , 我们跑一个二分图匹配:

n-匹配值即为答案(想一想为什么?)

码(dinic):

#include<iostream>
#include<cstdio>
using namespace std;
#include<cstring>
#include<queue>
#define inf 1e7+1
#define N 301
#define M 10005
int dis[M],xia[N],hou[M],zhong[M],zhi[M],tot=-1,s,t,i,j,k,yuan[N],n,m,x,y;
bool tu[105][105];
queue<int>q;
void jia(int x,int y,int z)
{hou[++tot]=yuan[x],yuan[x]=tot,zhi[tot]=z,zhong[tot]=y;
}
void jian (int x,int y,int z)
{jia(x,y,z);jia(y,x,0);
}
bool bfs(int s,int t)
{memset(dis,0x7f,sizeof(dis));for(int i=1;i<=t;i++)xia[i]=yuan[i];q.push(s);dis[s]=1;while(!q.empty()){int st=q.front();q.pop();for(i=xia[st];i!=-1;i=hou[i]){int nd=zhong[i];    if(dis[nd]>inf&&zhi[i]){dis[nd]=dis[st]+1;q.push(nd);              }           }}
//  cout<<dis[t];return dis[t]<inf ;}
int dfs(int now,int t,int limit)
{if(!limit||now==t)return limit;int i,f=0,flow=0;for(i=xia[now];i!=-1;i=hou[i]){xia[now]=i;int nd=zhong[i];if(dis[nd]==dis[now]+1&&(f=dfs(nd,t,min(limit,zhi[i])))){flow+=f;limit-=f;zhi[i]-=f;zhi[i^1]+=f;if(!limit)break;} }return flow;
}
int dinic(int s,int t)
{int daan=0;while(bfs(s,t)){daan+=dfs(s,t,inf);//cout<<daan;}
return daan;    }
int main()
{memset(yuan,-1,sizeof(yuan));scanf("%d%d",&n,&m);for(i=1;i<=m;i++){scanf("%d%d",&x,&y);tu[x][y]=1;         }   for(k=1;k<=n;k++)for(i=1;i<=n;i++)for(j=1;j<=n;j++){if(i==j||j==k||i==k)continue;if(tu[i][k]&&tu[k][j])tu[i][j]=1;      }s=2*n+1;t=2*n+2;for(i=1;i<=n;i++){jian(s,i,1);jian(i+n,t,1);for(j=1;j<=n;j++){if(i==j)continue;if(tu[i][j])   jian(i,j+n,1);     }   }//cout<<"p";cout<<n-dinic(s,t);
}

难点:枚举互斥关系转化匹配

2017.3.17 祭祀 失败总结相关推荐

  1. 《麻省理工科技评论》:2018年18大科技趋势,2017年7大失败技术

    来源:科技周 摘要:2018 年伊始,许多科技大势仍在继续,正如比尔·盖茨所说,"大多数人高估了某种技术的短期价值,低估了其长期价值."同样,大多数的年度预测会高估了一年内一些事件 ...

  2. 2017.8.17 开始了我的QT 学习。

    Ctrl+H ........................................................................水平布局 Ctrl+L ......... ...

  3. win10 如何配置 java jdk1.8环境变量(2017.8.17 )jdk1.8.0_144

    win10 如何配置 java jdk 环境变量 2017.8.17 本篇还适用于 windows server 2012. windows server 2014+ 一.安装 下载 jdk 64位 ...

  4. 2017第17届CBME中国孕婴童展、童装展会刊(参展商名录)

    2017第17届CBME中国孕婴童展.童装展会刊(参展商名录) 展会名称: 2017第17届CBME中国孕婴童展.童装展 所属展馆: 国家会展中心(上海) 开展时间: 2017-07-19 至 07- ...

  5. 找不到mfc140u.dll或者Microsoft Visual C++ 2017 Redistributable一直安装失败解决

    找不到mfc140u.dll 安装后提示这个问题,我将xshell卸载重新安装后发现安装过程中提示Microsoft Visual C++ 2017 Redistributable一直安装失败,所以问 ...

  6. 2017.10.17 Codechef MARCH14 GERALD07加强版 失败总结

    以前做这个题简直是噩梦的难度 有个很神的做法就是 利用最简联通形式来统计联通块 把一个要求的区间写成一颗等价的树,,就有了统一的标准 然后考虑怎么构造这棵树,看每次加入的边,如果已经联通,则考虑把这个 ...

  7. 2017.9.17 选数 失败总结

    这题做了好久,主要是老想找到式子解决问题,忽略了容斥 以后像这种约束条件比较单一的一定要考虑容斥' 然后就是枚举倍数做递推了,,f[i]表示最大公约数为i的数对有几个 然后枚举倍数减掉就行了 注意相等 ...

  8. 2017.8.17实操总结

    1.insert into select from 从一个表复制数据,然后把数据插入到一个已存在的表中.目标表中任何已存在的行都不会受影响. 例: insert into fact.T_FACT_US ...

  9. 2017.10.11 灾难 失败总结

    想了一上午没有结果,主要是因为原图搜索性太强,,就是每个点的影响虽然是固定的,但决策是需要遍历的.. 所以不能抽象成数字拓扑思考,不然同样的影响会被访问多次,却因为目标点的状态不同  而无法继续化简 ...

最新文章

  1. 压缩aspx页面,移除aspx多余的空格 供学习参考
  2. 2017 年该学习的编程语言、框架和工具
  3. 现代计算机三大科学计算,基于三维重建过程中纹理映射问题的研究
  4. 期货与期权(part9)--交易员类型和交易指令类型
  5. hikaricp mysql_使用 HikariCP 数据源
  6. 孪生神经网络--一个简单神奇的结构
  7. pythonnumpy函数四舍五入_NumPy函数
  8. python每日一题今天的答案_python每日一题总结1
  9. 疫情之下困难的设备维护工作该如何解决? ​
  10. 普通码农和CTO之间的差距
  11. 红帽停止对 CentOS 投资
  12. 七牛云存储,资源云存储平台
  13. android 广播 源码,广播电台APP源代码 电台APP源代码 播客APP源代码 Android源代码...
  14. HTML的注释与JavaScript注释及快捷键
  15. 弹性系数和线径的计算公式_压缩弹簧的弹性系数计算
  16. 柱状图怎么设置xy轴_经验-Origin做柱状图常遇问题-柱状图X坐标轴如何设置—小技巧...
  17. python刷步数程序设计_利用python+云函数搭建自己的修改步数api接口
  18. Android解决Could not find manifest-merger.jar问题
  19. prim algorithm
  20. parent.relativePath‘ of POM io.renren:renren-generator:1.0.0

热门文章

  1. SpringBoot和RabbitMQ集成
  2. Head First设计模式读书笔记九 第十章 状态模式
  3. 2021华为杯建模---总结
  4. 商丘高中计算机考试成绩查询系统,河南省中招考生服务平台2019商丘中考成绩查询系统入口...
  5. VisualVM提示检测不到本地JAVA程序
  6. python apriori算法 sklearn_R 和 Python (numpy scipy pandas) 用于统计学分析,哪个更好?...
  7. python测验2_测验2: Python基础语法(上) (第4周)
  8. java继承父类执行顺序_java中子类继承父类程序执行顺序问题
  9. mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构
  10. Oracle/PLSQL Repeat Until Loop