2017.3.17 祭祀 失败总结
这题竟然把我卡了好久、、
很好的延续了昨天的状态、
一开始看到制约条件就知道可以跑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 祭祀 失败总结相关推荐
- 《麻省理工科技评论》:2018年18大科技趋势,2017年7大失败技术
来源:科技周 摘要:2018 年伊始,许多科技大势仍在继续,正如比尔·盖茨所说,"大多数人高估了某种技术的短期价值,低估了其长期价值."同样,大多数的年度预测会高估了一年内一些事件 ...
- 2017.8.17 开始了我的QT 学习。
Ctrl+H ........................................................................水平布局 Ctrl+L ......... ...
- 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位 ...
- 2017第17届CBME中国孕婴童展、童装展会刊(参展商名录)
2017第17届CBME中国孕婴童展.童装展会刊(参展商名录) 展会名称: 2017第17届CBME中国孕婴童展.童装展 所属展馆: 国家会展中心(上海) 开展时间: 2017-07-19 至 07- ...
- 找不到mfc140u.dll或者Microsoft Visual C++ 2017 Redistributable一直安装失败解决
找不到mfc140u.dll 安装后提示这个问题,我将xshell卸载重新安装后发现安装过程中提示Microsoft Visual C++ 2017 Redistributable一直安装失败,所以问 ...
- 2017.10.17 Codechef MARCH14 GERALD07加强版 失败总结
以前做这个题简直是噩梦的难度 有个很神的做法就是 利用最简联通形式来统计联通块 把一个要求的区间写成一颗等价的树,,就有了统一的标准 然后考虑怎么构造这棵树,看每次加入的边,如果已经联通,则考虑把这个 ...
- 2017.9.17 选数 失败总结
这题做了好久,主要是老想找到式子解决问题,忽略了容斥 以后像这种约束条件比较单一的一定要考虑容斥' 然后就是枚举倍数做递推了,,f[i]表示最大公约数为i的数对有几个 然后枚举倍数减掉就行了 注意相等 ...
- 2017.8.17实操总结
1.insert into select from 从一个表复制数据,然后把数据插入到一个已存在的表中.目标表中任何已存在的行都不会受影响. 例: insert into fact.T_FACT_US ...
- 2017.10.11 灾难 失败总结
想了一上午没有结果,主要是因为原图搜索性太强,,就是每个点的影响虽然是固定的,但决策是需要遍历的.. 所以不能抽象成数字拓扑思考,不然同样的影响会被访问多次,却因为目标点的状态不同 而无法继续化简 ...
最新文章
- 压缩aspx页面,移除aspx多余的空格 供学习参考
- 2017 年该学习的编程语言、框架和工具
- 现代计算机三大科学计算,基于三维重建过程中纹理映射问题的研究
- 期货与期权(part9)--交易员类型和交易指令类型
- hikaricp mysql_使用 HikariCP 数据源
- 孪生神经网络--一个简单神奇的结构
- pythonnumpy函数四舍五入_NumPy函数
- python每日一题今天的答案_python每日一题总结1
- 疫情之下困难的设备维护工作该如何解决? ​
- 普通码农和CTO之间的差距
- 红帽停止对 CentOS 投资
- 七牛云存储,资源云存储平台
- android 广播 源码,广播电台APP源代码 电台APP源代码 播客APP源代码 Android源代码...
- HTML的注释与JavaScript注释及快捷键
- 弹性系数和线径的计算公式_压缩弹簧的弹性系数计算
- 柱状图怎么设置xy轴_经验-Origin做柱状图常遇问题-柱状图X坐标轴如何设置—小技巧...
- python刷步数程序设计_利用python+云函数搭建自己的修改步数api接口
- Android解决Could not find manifest-merger.jar问题
- prim algorithm
- parent.relativePath‘ of POM io.renren:renren-generator:1.0.0
热门文章
- SpringBoot和RabbitMQ集成
- Head First设计模式读书笔记九 第十章 状态模式
- 2021华为杯建模---总结
- 商丘高中计算机考试成绩查询系统,河南省中招考生服务平台2019商丘中考成绩查询系统入口...
- VisualVM提示检测不到本地JAVA程序
- python apriori算法 sklearn_R 和 Python (numpy scipy pandas) 用于统计学分析,哪个更好?...
- python测验2_测验2: Python基础语法(上) (第4周)
- java继承父类执行顺序_java中子类继承父类程序执行顺序问题
- mysql主从架构搭建_技术 | 手把手教你搭建MySQL主从架构
- Oracle/PLSQL Repeat Until Loop