Luogu P3033 [USACO11NOV]牛的障碍Cow Steeplechase(二分图匹配)
2024-09-05 00:45:08
P3033 [USACO11NOV]牛的障碍Cow Steeplechase
题意
题目描述
--+-------
-----+-----
---+--- |
| | |
--+-----+--+- |
| | | | |
| --+--+--+-+-
| | | |
|
----------
-----------
------- |
| |
| | |
| | | |
| | | |
| | | |
|
给出\(N\)平行于坐标轴的线段,要你选出尽量多的线段使得这些线段两两没有交点(顶点也算),横的与横的,竖的与竖的线段之间保证没有交点,输出最多能选出多少条线段。
输入输出样例
输入样例#1:
3
4 5 10 5
6 2 6 12
8 3 8 5
输出样例#1:
2
思路
其实这题就一句话:二分图最大独立集大小=总点数-最大匹配数。
二分图匹配就好了。
AC代码
#include<bits/stdc++.h>
using namespace std;
const int MAXN=255;
int n,ans,match[MAXN],xx[MAXN],yy[MAXN],xxx[MAXN],yyy[MAXN];
int cnt,top[MAXN],to[MAXN*MAXN],nex[MAXN*MAXN];
bool vis[MAXN];
int read()
{
int re=0;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) re=(re<<3)+(re<<1)+ch-'0',ch=getchar();
return re;
}
void add_edge(int x,int y){to[++cnt]=y,nex[cnt]=top[x],top[x]=cnt;}
bool dfs(int now)
{
for(int i=top[now];i;i=nex[i])
if(!vis[to[i]])
{
vis[to[i]]=true;
if(!match[to[i]]||dfs(match[to[i]]))
{
match[to[i]]=now;
return true;
}
}
return false;
}
int main()
{
n=read();
for(int i=1;i<=n;i++)
{
xx[i]=read(),yy[i]=read(),xxx[i]=read(),yyy[i]=read();
if(xx[i]>xxx[i]) swap(xx[i],xxx[i]);
if(yy[i]>yyy[i]) swap(yy[i],yyy[i]);
}
for(int i=1;i<=n;i++)
{
if(xx[i]!=xxx[i]) continue;
for(int j=1;j<=n;j++)
{
if(yy[j]!=yyy[j]) continue;
if(yy[i]<=yy[j]&&yy[j]<=yyy[i]&&xx[j]<=xx[i]&&xx[i]<=xxx[j]) add_edge(i,j);
}
}
for(int i=1;i<=n;i++)
if(xx[i]==xxx[i])
{
memset(vis,false,sizeof vis);
if(dfs(i)) ans++;
}
printf("%d",n-ans);
return 0;
}
最新文章
- MySQL中interactive_timeout和wait_timeout的区别
- css3 同时加载两个动画
- 对C++虚函数、虚函数表的简单理解
- [工作积累] GCC 4.6 new[] operator内存对齐的BUG
- 纯CSS手风琴效果
- XCode的一些调试技巧
- angular.forEach
- java生成json字符串的方法
- Contributing to Open Source on GitHub(转)
- 推荐几个JSON工具
- XML文档读取-DOM
- 2017 .NET 開發者須知
- codeforces 888G Xor-MST
- 一句python代码搭建FTP服务
- centos 安装setup命令的方法
- Django 认证
- 20155334 2016-2017-2 《Java程序设计》第九周学习总结
- ubuntu之视频转换(Avconv的使用)
- 教你如何修改CentOS系统上的时间
- Fat-jar 打包,并使用 proguard 混淆代码
热门文章
- ACM-ICPC 2018 沈阳赛区网络预赛-B,F,G
- iOS13适配/黑暗模式的适配/KVC访问私有属性/模态弹窗ViewController 默认样式改变 /LaunchImage即将废弃/蓝牙的权限申请/推送Device Token适配/UIKit 控件变化/StatusBar新增样式
- Devstack — screen 调试工具的使用
- [00]APUE:GCC / GDB / Makefile
- Android Telephony分析(五) ---- TelephonyRegistry详解
- 精选15个国外CSS框架
- ionic 滚动条 ion-scroll 用于创建一个可滚动的容器
- 巧用CSS3的calc()宽度计算做响应模式布局
- JavaConfig
- PAT甲级——A1115 Counting Nodes in a BST【30】