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;
}

最新文章

  1. MySQL中interactive_timeout和wait_timeout的区别
  2. css3 同时加载两个动画
  3. 对C++虚函数、虚函数表的简单理解
  4. [工作积累] GCC 4.6 new[] operator内存对齐的BUG
  5. 纯CSS手风琴效果
  6. XCode的一些调试技巧
  7. angular.forEach
  8. java生成json字符串的方法
  9. Contributing to Open Source on GitHub(转)
  10. 推荐几个JSON工具
  11. XML文档读取-DOM
  12. 2017 .NET 開發者須知
  13. codeforces 888G Xor-MST
  14. 一句python代码搭建FTP服务
  15. centos 安装setup命令的方法
  16. Django 认证
  17. 20155334 2016-2017-2 《Java程序设计》第九周学习总结
  18. ubuntu之视频转换(Avconv的使用)
  19. 教你如何修改CentOS系统上的时间
  20. Fat-jar 打包,并使用 proguard 混淆代码

热门文章

  1. ACM-ICPC 2018 沈阳赛区网络预赛-B,F,G
  2. iOS13适配/黑暗模式的适配/KVC访问私有属性/模态弹窗ViewController 默认样式改变 /LaunchImage即将废弃/蓝牙的权限申请/推送Device Token适配/UIKit 控件变化/StatusBar新增样式
  3. Devstack — screen 调试工具的使用
  4. [00]APUE:GCC / GDB / Makefile
  5. Android Telephony分析(五) ---- TelephonyRegistry详解
  6. 精选15个国外CSS框架
  7. ionic 滚动条 ion-scroll 用于创建一个可滚动的容器
  8. 巧用CSS3的calc()宽度计算做响应模式布局
  9. JavaConfig
  10. PAT甲级——A1115 Counting Nodes in a BST【30】