当前位置: 首页 > news >正文

洛谷P2071 座位安排

洛谷P2071 座位安排

洛谷题目传送门

题目背景

公元二零一四年四月十七日,小明参加了省赛,在一路上,他遇到了许多问题,请你帮他解决。

题目描述

已知车上有 NNN 排座位,有 2N2N2N 个人参加省赛,每排座位只能坐两人,且每个人都有自己想坐的排数,问最多使多少人坐到自己想坐的位置。

输入格式

第一行,一个正整数 NNN

第二行至第 2N+12N+12N+1 行,每行两个正整数 Si,1,Si,2S_{i, 1},S_{i, 2}Si,1,Si,2,为每个人想坐的排数。

输出格式

一个非负整数,为最多使得多少人满意。

输入输出样例 #1

输入 #1

4
1 2
1 3
1 2
1 3
1 3
2 4
1 3
2 3

输出 #1

7

说明/提示

对于 10%10\%10% 的数据,n≤10n \le 10n10

对于 30%30\%30% 的数据,n≤50n \le 50n50

对于 60%60\%60% 的数据,n≤200n \le 200n200

对于 100%100\%100% 的数据,n≤2000n \le 2000n2000

思路详解

确定算法

首先,我们发现这道题的意思就是有2N2N2N个人要坐NNN个椅子,每个椅子最多做两个人,每个人有他想做的椅子,求最多能让多少人做到自己想做的椅子。
根据我(题)们(目)的经(标)验(签),像这种最多可以满足多少个人的要求的显然是二分图

明确思路

我们发现普通的二分图最大匹配中所有的点只能用一次,但是这个椅子可以给2个人坐,那怎么办呢???
考虑动用我们的神力,直接将第iii号椅子拆解为第iii号和第i+ni+ni+n号椅子,这样椅子的两边就不会相互影响了。

实现步骤

  1. iii次输入2个椅子x,yx,yx,y,建四条边(i,x),(i,y),(i,x+n),(i,y+n)(i,x),(i,y),(i,x+n),(i,y+n)(i,x),(i,y),(i,x+n),(i,y+n)
  2. 枚举每个人,使用匈牙利算法判断是否可行,可行则ans++ans++ans++
  3. 最后直接输出答案即可。

code

#include<bits/stdc++.h>
using namespace std;
const int N=6e3+5;
int n;
vector<int>e[N];
int vis[N],fa[N];
bool dfs(int u){//匈牙利算法for(int v:e[u]){if(!vis[v]){vis[v]=1;if(!fa[v]||dfs(fa[v])){fa[v]=u;return 1;}}}return 0;
}
int main(){cin>>n;n*=2;//注意!!!n乘了2for(int i=1;i<=n;i++){int x,y;cin>>x>>y;e[i].push_back(x);e[i].push_back(x+n);//建的4条边e[i].push_back(y);e[i].push_back(y+n);}int ans=0;for(int i=1;i<=n;i++){//枚举每个imemset(vis,0,sizeof(vis));if(dfs(i))ans++;}cout<<ans;return 0;
}
http://www.dtcms.com/a/461625.html

相关文章:

  • 广西代理网站建设公司公司网站建设注意点
  • 设计模式--外观模式:简化复杂系统的统一接口
  • 网站开发需要看哪些书哪个网站可以做一对一老师
  • k8s基础监控promql
  • K8S(一)—— 云原生与Kubernetes(K8S)从入门到实践:基础概念与操作全解析
  • 从入门到精通【Redis】初识Redis哨兵机制(Sentinel)
  • Go语言操作Redis
  • JVM 线上调优与排查指南
  • 青岛公司建站2024年新闻摘抄
  • 杭州网站制作工作室做网站含营销
  • 解决Intellij IDEA控制台,logger.info(),system.out.println()等中文乱码问题
  • Windows+Linux命令总结
  • 无人机智能技术模块运行要点与难点
  • C++17 新特性: std::string_view —— 减少内存分配,让std::string运行得更快
  • 北京营销策划有限公司优化官方网站设计
  • 网站建设涉及和描述的一些问题珠海网站建设厚瑜
  • 11. ubuntu14.0.4 安装文件管理器右键打开终端
  • k8s架构组件
  • 「机器学习笔记8」决策树学习:从理论到实践的全面解析(下)
  • ES6(二)
  • 做co的网站学校网页设计模板图片
  • QTreeView实现多折叠效果
  • 纯 flash 网站比较好的设计欣赏网站
  • 【笔记】树链剖分三题(洛谷 P3384 树剖模板 P2146 软件包管理器 P2486 染色)
  • 建设银行网站用户名忘了怎么办wordpress标签链接优化
  • 文献阅读:A Survey of Edge Caching: Key Issues and Challenges
  • 信号140上岸山东师范经验。
  • 力扣面试经典150题day1第一题(lc88),第二题(lc27)
  • asp 网站开发 软件做期货主要看哪几个财经网站
  • JavaScript实现防抖、节流【带思路】