当前位置:网站首页>P3033 [usaco11nov]cow steelchase g (similar to minimum path coverage)
P3033 [usaco11nov]cow steelchase g (similar to minimum path coverage)
2022-07-06 04:03:00 【Zhong Zhongzhong】
https://www.luogu.com.cn/problem/P3033
P3033 [USACO11NOV]Cow Steeplechase G
Cried and cried , I originally wanted to watch online classes , This inscription cost me a lot 2 hours .... Fortunately, it's a blue question , Or you'll lose a lot
Seriously summarize :
1. First 250250 Data over 10000 , Be sure to use the chained forward star method to save the map .
2. The difficulty of this problem lies in the establishment of graphics , Take the vertical line segment as the upper node , The lower node intersecting with it establishes a line segment ; The horizontal line serves as the lower node , Find the maximum matching tree , This is the minimum vertex covering
3.n- This value , The rest of the line segments have nothing to do with each other , That's the answer. .
4. The rest is the template of Hungarian algorithm *
#include <bits/stdc++.h>
#define y1 y11
using namespace std;
const int inf=0x3f3f3f3f;
const int maxn=1e6+5;
int link[maxn],n,head[maxn],cnt;
int p[maxn],x1[maxn],y1[maxn],x2[maxn],y2[maxn],n1;
bool used[maxn];
struct node
{
int to,nxt;
}e[maxn];
void add_edge(int from,int to)
{
e[++cnt].to=to;
e[cnt].nxt=head[from];
head[from]=cnt;
}
bool dfs(int u)
{
for(int i=head[u];i;i=e[i].nxt)
{
int v=e[i].to;
if(!used[v])
{
used[v]=1;
if(link[v]==-1||dfs(link[v]))
{
link[v]=u;
return 1;
}
}
}
return 0;
}
int hungary()
{
memset(link,-1,sizeof(link));
int ret=0;
for(int i=1;i<=n;i++)
{
if(p[i]==2)
continue;
memset(used,0,sizeof(used));
if(dfs(i))
ret++;
}
return ret;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d%d%d%d",&x1[i],&y1[i],&x2[i],&y2[i]);
if(x1[i]>x2[i]) swap(x1[i],x2[i]);
if(y1[i]>y2[i]) swap(y1[i],y2[i]);
if(x1[i]==x2[i]) p[i]=1,n1++; // Number of vertical points
else
p[i]=2;
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
if(p[i]==1&&p[j]==2)
{
if(x1[i]>=x1[j]&&x2[i]<=x2[j]&&y1[i]<=y1[j]&&y2[i]>=y2[j])
add_edge(i,n1+j);
}
else if(p[i]==2&&p[j]==1)
{
if(x1[i]<=x1[j]&&x2[i]>=x2[j]&&y1[i]>=y1[j]&&y2[i]<=y2[j])
add_edge(j,n1+i);
}
}
}
printf("%d\n",n-hungary());
return 0;
}
边栏推荐
- Python book learning notes - Chapter 09 section 01 create and use classes
- [matlab] - draw a five-star red flag
- No qualifying bean of type ‘......‘ available
- User experience index system
- [disassembly] a visual air fryer. By the way, analyze the internal circuit
- C (XXIX) C listbox CheckedListBox Imagelist
- [adjustable delay network] development of FPGA based adjustable delay network system Verilog
- [001] [stm32] how to download STM32 original factory data
- [FPGA tutorial case 12] design and implementation of complex multiplier based on vivado core
- 自动化测试的好处
猜你喜欢
[Zhao Yuqiang] deploy kubernetes cluster with binary package
Ipv4中的A 、B、C类网络及子网掩码
User datagram protocol UDP
Redis (replicate dictionary server) cache
Ks003 mall system based on JSP and Servlet
自动化测试怎么规范部署?
Cf464e the classic problem [shortest path, chairman tree]
ESP32_ FreeRTOS_ Arduino_ 1_ Create task
C language -- structs, unions, enumerations, and custom types
P7735-[noi2021] heavy and heavy edges [tree chain dissection, line segment tree]
随机推荐
【FPGA教程案例12】基于vivado核的复数乘法器设计与实现
Développement d'un module d'élimination des bavardages à clé basé sur la FPGA
/usr/bin/gzip: 1: ELF: not found/usr/bin/gzip: 3: : not found/usr/bin/gzip: 4: Syntax error:
An article will give you a comprehensive understanding of the internal and external components of "computer"
User datagram protocol UDP
MySQL transaction isolation level
Hashcode and equals
Global and Chinese market of plasma separator 2022-2028: Research Report on technology, participants, trends, market size and share
如何修改表中的字段约束条件(类型,default, null等)
[FPGA tutorial case 12] design and implementation of complex multiplier based on vivado core
[Massey] Massey font format and typesetting requirements
在 .NET 6 中使用 Startup.cs 更简洁的方法
The Research Report "2022 RPA supplier strength matrix analysis of China's banking industry" was officially launched
User perceived monitoring experience
SSTI template injection explanation and real problem practice
Esp32 (based on Arduino) connects the mqtt server of emqx to upload information and command control
Thread sleep, thread sleep application scenarios
使用JS完成一个LRU缓存
【按键消抖】基于FPGA的按键消抖模块开发
80% of the diseases are caused by bad living habits. There are eight common bad habits, which are both physical and mental