题目链接:https://vjudge.net/contest/161820#problem/E

题意:

有一些同学,要从中选出一些同学来,人数尽量多,但是,两两之间要满足至少一个条件(身高差>40,性别相同,。。。)

分析:

最大独立集:尽量选择多的结点,任意两个结点不相邻;

男同学X,女同学Y,如果可能产生关系,连一条边,这样这两个人就不会在一起;

最大独立集=n-最大匹配

证明:

最小点覆盖 = 对于每一条边,至少有一个点要被选中

最大独立集 = 对于每一条边,最多一个点被选中

从定义中可以看出,这两个是互补的;

 #include <bits/stdc++.h>

 using namespace std;

 const int maxn = +;

 struct BPM {
int n,m;
vector<int> G[maxn];
int left[maxn];
bool T[maxn]; int right[maxn];
bool S[maxn]; void init(int n,int m) {
this->n = n;
this->m = m;
for(int i=;i<n;i++)
G[i].clear();
} void AddEdge(int u,int v) {
G[u].push_back(v);
} bool match(int u) {
S[u] = true;
for(int i=;i<G[u].size();i++) {
int v = G[u][i];
if(!T[v]) {
T[v] = true;
if(left[v]==-||match(left[v])) {
left[v] = u;
right[u] = v;
return true;
}
}
}
return false;
} int solve() {
memset(left,-,sizeof(left));
memset(right,-,sizeof(right));
int ans = ;
for(int u=;u<n;u++) {
memset(S,,sizeof(S));
memset(T,,sizeof(T));
if(match(u))
ans++;
}
return ans;
} }sol; struct Student {
int h;
string music,sport;
Student(int h,string music,string sport):h(h),music(music),sport(sport) {}
}; bool conflict(const Student& a,const Student& b) {
return abs(a.h-b.h)<=&&a.music ==b.music && a.sport!=b.sport;
} int main()
{
int t;
cin>>t;
while(t--) {
int n;
cin>>n;
vector<Student> male,female;
for(int i=;i<n;i++) {
int h;
string gender,music,sport;
cin>>h>>gender>>music>>sport;
if(gender[]=='M') male.push_back(Student(h,music,sport));
else female.push_back(Student(h,music,sport));
}
int x = male.size();
int y = female.size();
sol.init(x,y);
for(int i=;i<x;i++)
for(int j=;j<y;j++)
if(conflict(male[i],female[j]))
sol.AddEdge(i,j);
printf("%d\n",x+y-sol.solve());
}
return ;
}

LA 3415 保守的老师的更多相关文章

  1. LA 3415 (二分图+最大独立集)

    题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...

  2. 【LA3415 训练指南】保守的老师 【二分图最大独立集,最小割】

    题意 Frank是一个思想有些保守的高中老师.有一次,他需要带一些学生出去旅行,但又怕其中一些学生在旅行中萌生爱意.为了降低这种事情发生的概率,他决定确保带出去的任意两个学生至少要满足下面四条中的一条 ...

  3. LA3415保守的老师

    题意:       有n个学生,老师要带他们出去玩,但是老师比较保守,怕他们之间萌生爱意,所以带出去的所有同学必须至少满足四个条件中的一组,问最多能带多少人出去玩. 思路:        比较简单二分 ...

  4. uva 12083 Guardian of Decency (二分图匹配)

    uva 12083 Guardian of Decency Description Frank N. Stein is a very conservative high-school teacher. ...

  5. poj 2771 Guardian of Decency 解题报告

    题目链接:http://poj.org/problem?id=2771 题目意思:有一个保守的老师要带他的学生来一次短途旅行,但是他又害怕有些人会变成情侣关系,于是就想出了一个方法: 1.身高差距   ...

  6. Guardian of Decency UVALive - 3415 最大独立集=结点数-最大匹配数 老师带大学生旅游

    /** 题目:Guardian of Decency UVALive - 3415 最大独立集=结点数-最大匹配数 老师带大学生旅游 链接:https://vjudge.net/problem/UVA ...

  7. CG基础教程-陈惟老师十二讲笔记

    转自 麽洋TinyOcean:http://www.douban.com/people/Tinyocean/notes?start=50&type=note 因为看了陈惟十二讲视频没有课件,边 ...

  8. cdoj916-方老师的分身 III 【拓扑排序】

    http://acm.uestc.edu.cn/#/problem/show/916 方老师的分身 III Time Limit: 3000/1000MS (Java/Others)     Memo ...

  9. leggere la nostra recensione del primo e del secondo

    La terra di mezzo in trail running sembra essere distorto leggermente massima di recente, e gli aggi ...

随机推荐

  1. 解决windows10活动历史记录删除问题

    Windows10日常办公过程中系统会记录很多活动历史记录信息,我是不希望我的活动历史记录随时可以被别人查看,虽然电脑有设置密码,但是办公电脑还是习惯将历史记录删除掉,并且永远禁用windows10的 ...

  2. Kafka消费不到数据的特殊情况

    我大约是把kafka消费不到数据的特殊情况都经历了一遍了吧= =. kafka消费不到数据的原因,首先检查配置之类的,如是否设置了group.id,对应的topic是否正确等等,这些不多说. 下面是我 ...

  3. 页面跳转问题-button 确定提交按钮

    form和ajax不可一起用了,button标签默认是用的form表单,所以导致跳转有问题,form不能和ajax一起用的,切记

  4. Android NDK 安装与配置

    本文主内容: 1.  Android NDK 安装 2.  安装Cygwin与使用NDK编译 3.  在Eclipse中集成C/C++开发环境CDT 4.  安装Sequoyah插件 5.  JNI编 ...

  5. 【算法】K-Means聚类算法(k-平均或k-均值)

    1.聚类算法和分类算法的区别 a)分类 分类(Categorization or Classification)就是按照某种标准给对象贴标签(label),再根据标签来区分归类. 举例: 假如你有一堆 ...

  6. JAVA 利用反射自定义数据层框架

    之前的随笔一直都在介绍c#,主要公司最近的业务都是做桌面程序,那么目前c#中的WPF肯定是我做桌面程序的不二之选,做了半年的WPF,也基本摸清了c#写代码的套路和规则(本人之前是两年多的JAVA开发者 ...

  7. 程序包com.sun.image.codec.jpeg不存在

    在pox.xml中引入依赖 <dependency><groupId>rt</groupId><artifactId>rt</artifactId ...

  8. ICONIX方法(用例分析方法实例教程)

  9. UML建模—EA的使用起步

    Enterprise Architect(EA) 是一个功能比较强悍的建模工具. 对于一个软件设计者来说,从需求分析到业务设计.类模型设计.数据库设计到测试.发布.部署等一系列软件设计必须的操作都可以 ...

  10. 信鸽推送 C#版SDK

    信鸽官方sdk没提供C#版的DEMO,考虑到应该有其他.NET的也会用到信鸽,下面是我在使用信鸽过程中写的demo.有什么不对的地方,欢迎各位大牛指导. 使用过程中主要是有2个问题: 1.参数组装,本 ...