uvalive 3415 Guardian Of Decency
题意:
有一个老师想组织学生出去旅游,为了避免他们之间有情侣产生,他制定了一系列的条件,满足这些条件之一,那么这些人理论上就不会成为情侣:
身高相差40cm;性别相同;喜欢的音乐风格不同;最喜欢的运动相同。
给出若干个学生的身高,性别,喜欢的音乐风格和喜欢的运动,问最多有多少人可以出去。
思路:
对于两个人,如果以上所有条件都不满足,那么就在他们之间连边,说明他们不能同时去。
问题就转化成了求一个二分图的最大独立集。(独立集是两两之间不存在边的点的集合,最大顾名思义)
最大独立集 = 点数- 最小点覆盖 = 点数 – 最大匹配
匈牙利算法,复杂度O(n^3)。
代码:
- #include <stdio.h>
- #include <iostream>
- #include <string>
- #include <string.h>
- #include <vector>
- using namespace std;
- const int N = ;
- vector<int> g[N];
- int link[N];
- bool vis[N];
- struct node
- {
- int hei;
- string sex,music,sport;
- node(int a,string b,string c,string d)
- {
- hei = a;
- sex = b;
- music = c;
- sport = d;
- }
- };
- vector<node> ns;
- bool dfs(int u)
- {
- for (int i = ;i < g[u].size();i++)
- {
- int v = g[u][i];
- if (!vis[v])
- {
- vis[v] = ;
- if (link[v] == - || dfs(link[v]))
- {
- link[v] = u;
- link[u] = v;
- return true;
- }
- }
- }
- return false;
- }
- int solve(int n)
- {
- int cnt = ;
- memset(link,-,sizeof(link));
- for (int i = ;i < n;i++)
- {
- if (link[i] == -)
- {
- memset(vis,,sizeof(vis));
- if (dfs(i)) cnt++;
- }
- }
- return cnt;
- }
- int mabs(int x)
- {
- return x >= ? x : -x;
- }
- int main()
- {
- int t;
- scanf("%d",&t);
- while (t--)
- {
- int n;
- scanf("%d",&n);
- ns.clear();
- for (int i = ;i < n;i++)
- {
- g[i].clear();
- int a;
- string b,c,d;
- cin >> a >> b >> c >> d;
- ns.push_back(node(a,b,c,d));
- }
- for (int i = ;i < n;i++)
- {
- for (int j = i + ;j < n;j++)
- {
- bool f = ;
- if (mabs(ns[i].hei - ns[j].hei) > ) f = ;
- if (ns[i].sex == ns[j].sex) f = ;
- if (ns[i].music != ns[j].music) f = ;
- if (ns[i].sport == ns[j].sport) f = ;
- if (!f)
- {
- g[i].push_back(j);
- g[j].push_back(i);
- }
- }
- }
- int ans = solve(n);
- printf("%d\n",n - ans);
- }
- return ;
- }
uvalive 3415 Guardian Of Decency的更多相关文章
- UVALive 3415 Guardian of Decency(二分图的最大独立集)
题意:老师在选择一些学生做活动时,为避免学生发生暧昧关系,就提出了四个要求.在他眼中,只要任意两个人符合这四个要求之一,就不可能发生暧昧.现在给出n个学生关于这四个要求的信息,求老师可以挑选出的最大学 ...
- Guardian of Decency UVALive - 3415 最大独立集=结点数-最大匹配数 老师带大学生旅游
/** 题目:Guardian of Decency UVALive - 3415 最大独立集=结点数-最大匹配数 老师带大学生旅游 链接:https://vjudge.net/problem/UVA ...
- Guardian of Decency(二分图)
Guardian of Decency Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submi ...
- 训练指南 UVALive - 3415(最大点独立集)
layout: post title: 训练指南 UVALive - 3415(最大点独立集) author: "luowentaoaa" catalog: true mathja ...
- POJ 2771 Guardian of Decency 【最大独立集】
传送门:http://poj.org/problem?id=2771 Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K Tot ...
- POJ 2771 Guardian of Decency (二分图最大点独立集)
Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 6133 Accepted: 25 ...
- uva 12083 Guardian of Decency (二分图匹配)
uva 12083 Guardian of Decency Description Frank N. Stein is a very conservative high-school teacher. ...
- poj——2771 Guardian of Decency
poj——2771 Guardian of Decency Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 5916 ...
- Guardian of Decency UVALive - 3415(最大独立集板题)
老师在选择一些学生做活动时,为避免学生发生暧昧关系,就提出了四个要求.在他眼中,只要任意两个人符合这四个要求之一,就不可能发生暧昧.现在给出n个学生关于这四个要求的信息,求老师可以挑选出的最大学生数量 ...
随机推荐
- multiDex分包时指定主dex的class列表
在gradle中我们使用了如下代码可以将指定类型分配到主dex中: afterEvaluate { tasks.matching { it.name.startsWith('dex') }.each ...
- 实验四 Android程序设计
20155224 实验四 Android程序设计 实验报告 实验报告封面: 课程:Java程序设计 班级:1652班 姓名:王高源 学号:20165225 指导教师:娄嘉鹏 实验日期:2018年5月1 ...
- linux链接库的理解
前段时间遇到个奇怪的问题,经调试是由于可执行程序A编译时使用的libssl.so.1.1及对应版本头文件,A链接的库libtest.so编译时使用的libssl.so.1.0及对应版本头文件,执行时l ...
- codechef Sum of Cubes 图论
正解:图论+数学 解题报告: 先放个传送门QwQ 然后放下题目大意?就说给定简单图,无自环或重边,然后求(∑e[i][j])k,i,j∈S,S为点集的子集 然后因为k的取值只有[1,3],所以这里分类 ...
- 深入了解HBASE架构(转)
dd by zhj: 最近的工作需要跟HBase打交道,所以花时间把<HBase权威指南>粗略看了一遍,感觉不过瘾,又从网上找了几篇经典文章. 下面这篇就是很经典的文章,对HBase的架构 ...
- es6原型的继承
class Parent { name = 'liangcheng'; } const parent = new Parent(); console.log(parent); // 类继承某实例对象属 ...
- VS2013 opencv配置
有三个地方需要配置,在配置之前首先要将platform配置好,下面的例子是x64 Release的“ 然后需要将include.lib的路径配置好 然后将dll拷贝至编译生成的Release文件夹中即 ...
- root用户远程登录Ubuntu
安装了一台Ubuntu的服务器,由于大家都需要使用,因此创建了多个用户,多台windows机器用过Putty远程登录,但是默认情况下创建的用户都是普通用户,也就是说很多root用户能够使用的权限以及命 ...
- 基于fiddler实现本地代理完成脚本测试
配置好fiddler以后,具体操作流程如下: 1.找到后在右边点击AutoResponder,查看,默认情况如下 勾选 2.ctrl+F 搜索 app. 关键字 ,找到后拖到右侧 3.替换本地文件 4 ...
- 20190223 Hadoop生态圈,关于大数据
周六参加了一场,大数据基础培训,讲得比较详细.培训的讲师对于互联网行业职位萎缩也有相对的解释,也还介绍了新的职位的诞生. 以前对于大数据的理解,就是超大的数据量,但对大数据开发不甚了解. 大数据平台的 ...