[LGOJ]P3033 [USACO11NOV]Cow Steeplechase G

P3033 [USACO11NOV]Cow Steeplechase G P3033 [USACO11NOV]Cow Steeplechase G 提交1.80k 通过638 时间限制1.00s 内存限制125.00MB 提交答案加入题单 复制题目 题目提供者FarmerJohn2 难度提高+/省选- 历史分数100 提交记录查看题解 标签 USACO2011 查看算法标签 进入讨论版 相关讨论 查看讨论 推荐题目 查看推荐 洛谷推荐关闭 展开 题目描述 Farmer John has a brill... 阅读详情

算法标签:二分图最大独立集

二分图各种类型题目数不胜数,这一题便是一个二分图的最大独立集问题

前置芝士

先简短介绍一下匈牙利算法

其实匈牙利算法就是一个妥协的过程,即若一点 A A A于另一点 B B B相连,而该边已有匹配 C C C,则尽可能的让 C C C去寻求其他点进行匹配,然后让 A , B A,B A,B完成匹配(不太地道的感觉)

核心代码:

inline bool dfs(int x)
{
	for (int i=head[x];i;i=edge[i].next)
	{
		int y=edge[i].to;
		if (vis[y]==false)
		{
			vis[y]=true;
			if (match[y]==0||dfs(match[y])==true)
			{
				match[y]=x;
				return true;
			}
		}
	}
}

二分图最大独立集

定义:
对于一张无向图 G ( V , E ) G(V,E) G(V,E),选出一个 V V V的子集 S S S,使得 S S S中任意两点之间都没有边,且 S S S是最大这样的子集。

求解方法:
二分图的最大独立集的点的数量=总点数N-最大匹配而最大匹配用匈牙利即可求得

简单的证明:要使得独立集越大,那么删掉的点就要越少,同时话要保证删掉的点覆盖到所有边,所以删掉的因该是最小点覆盖。

推荐题目:

好的,那么介绍完最大独立集,讲回我们这道题

这题是一个非常典型的二分图最大独立集问题,发现每两条均均是不重合的,于是想到直接将相交的两条线段连接,得到的一点是一个二分图(同边的(即同方向)没有边相连,符合二分图定义)

于是呢我们发现题目所求是"选出尽量多的线段使得这些线段两两没有交点",那么在二分图中间也就是选出尽量多的点使得他们之间没有连边,通过这个建模,我们就将这个题完美地转化成了一个裸的二分图最大独立集问题了,根据

二分图最大独立集=点的个数 − - −最大匹配于是乎这题就可以求解了

最后再讲一下怎么判断相交的问题

  • 判断线段方向即看横纵做坐标哪个相等即可,若 X 1 = X 2 X1=X2 X1=X2则方向为竖,若 Y 1 = Y 2 Y1=Y2 Y1=Y2则为横
  • 对每个坐标进行排序,于是我们得到:
inline bool intersect(node2 x,node2 y)	//x为竖边,y为横边,且横纵坐标均为从小到大
{
	if (x.a.x>=y.a.x&&x.a.x<=y.b.x&&x.a.y<=y.a.y&&x.a.y>=y.b.y)
	{
		return 1;
	}
	return 0;
}

即竖边的 x x x坐标位于横边的两个端点的 x x x坐标之间并且横边的 y y y坐标位于竖边的两个端点的 y y y坐标之间

ok,于是我们便愉快地得到了代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=1000005;
int n,cnt,tot,ans;
int head[maxn],vis[maxn],match[maxn];
struct node
{
	int x,y;
};
struct node2
{
	int dir;
	node a,b;
}seg[maxn];
struct node3
{
	int from,to,next;
}edge[maxn];
inline int add(int x,int y)
{
	edge[++tot].next=head[x];
	edge[tot].from=x;
	edge[tot].to=y;
	head[x]=tot;
}
inline int read()
{
	int s=0,f=1;
	char c=getchar();
	while (c<'0'||c>'9')
	{
		if (c=='-')
		{
			f=-1;
		}
		c=getchar();
	}
	while (c>='0'&&c<='9')
	{
		s=s*10+c-48;
		c=getchar();
	}
	return s*f;
}
inline bool cmp(node2 x,node2 y)
{
	return x.dir<y.dir;
}
inline bool intersect(node2 x,node2 y)
{
	if (x.a.x>=y.a.x&&x.a.x<=y.b.x&&y.a.y>=x.a.y&&y.a.y<=x.b.y)
	{
		return 1;
	}
	return 0;
}
inline bool dfs(int x)
{
	for (int i=head[x];i;i=edge[i].next)
	{
		int y=edge[i].to;
		if (vis[y]==false)
		{
			vis[y]=true;
			if (match[y]==0||dfs(match[y])==true)
			{
				match[y]=x;
				return true;
			}
		}
	}
}
int main()
{
	ios::sync_with_stdio(false);
	n=read();
	for (int i=1;i<=n;i++)
	{
		seg[i].a.x=read();
		seg[i].a.y=read();
		seg[i].b.x=read();
		seg[i].b.y=read();
		if (seg[i].a.x==seg[i].b.x)
        {
			seg[i].dir=1;
			cnt++;
			if (seg[i].a.y>seg[i].b.y)
			{
				swap(seg[i].a.y,seg[i].b.y);
			}
        }
        if (seg[i].a.y==seg[i].b.y)
        {
            seg[i].dir=2;
            if (seg[i].a.x>seg[i].b.x)
			{
				swap(seg[i].a.x,seg[i].b.x);
			}
        }
	}
	sort(seg+1,seg+n+1,cmp);
	for (int i=1;i<=cnt;i++)
	{
		for (int j=cnt+1;j<=n;j++)
		{
			if (intersect(seg[i],seg[j]))
			{
				add(i,j);
			}
		}
	}
	for (int i=1;i<=cnt;i++)
	{
		memset(vis,0,sizeof(vis));
		if (dfs(i))
		{
			ans++;
		}
	}
	cout<<n-ans<<endl;
	return 0;
}

基于MATLAB的太阳能光伏电力仿真,模拟每日太阳能发电,可视化功率曲线,并通过数值积分计算总能量输出。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

人脸识别签到考勤系统实战源码

这是一套可直接运行的人脸识别智能签到考勤系统,基于OpenCV YuNet人脸检测与SFace特征识别实现,全程本机运行,数据保存在本地SQLite,不上传任何服务器。配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、逐步骤操作截图和答辩PPT讲解。 系统围绕五个功能模块展开:人脸注册支持照片批量导入并提取特征入库;识别签到支持照片或摄像头两种方式,实时框出人脸并标注姓名、相似度与考勤状态;考勤规则引擎按config.py里配置的上下班时间与宽限分钟,自动判定迟到、早退、缺勤;Tkinter管理面板完成人员管理、流水查询与月度汇总;最后通过openpyxl一键导出整月考勤矩阵,正常绿、迟到黄、缺勤红,Excel打开即用。 选型上特意选了YuNet+SFace路线:纯pip安装免编译,CPU单帧识别不到100ms,两个ONNX模型共约37MB,出自OpenCV官方模型仓库,毕设报告引用有据可查。教程第7章整理了16条Windows下真实踩过的报错及排查方法,第8章给出换模型、换人脸、加功能的二次开发路径。 适合做计算机视觉方向毕设或课程设计的学生,也适合想给班级、实验室、小团队搭一套本地签到工具的Python学习者。运行环境为Python 3.9以上、Windows 10/11,不需要GPU。 使用时先pip install -r requirements.txt装齐依赖,再运行download_data.py下载模型,最后启动main.py即可进入图形界面;命令行register、recognize、report子命令也可脱离界面单独调用。

P3033 [USACO11NOV]Cow Steeplechase G(二分图最大独立集,结论,逆向思维)

P3033 [USACO11NOV]Cow Steeplechase G 分析: 将横的线段看作一个集合,竖的线段看作另一集合,且集合内部没有关联 容易想到是用二分图最大匹配来解决 常规的二分图最大匹配就是求最大匹配的对数,但这题是反过来的 要求两个集合不匹配的线段的个数(即求最大独立集) 结论:最大独立集 === 总点数 −-− 最大匹配数(两线段相交即匹配) 现在思考这个结论的正确性 若两线段相交,则要去掉一条线段 现已知最多有 mmm 对线段相交,为什么去掉 mmm 条线段就够了 (不知道

yezzz的博客 280

【无人机航测】MATLAB重叠率与地面分辨率协同设计:航线间距及飞行方向优化系统 MATLAB 无人机航测重叠率设计|地面分辨率与航线间距计算

内容概要:本文档介绍了基于MATLAB R2025b开发的无人机航测重叠率与航线间距计算系统,旨在通过建立统一的航测几何计算体系,实现重叠率、地面分辨率与航线间距的动态协同设计。系统结合相机参数、飞行参数、地形数据与风场信息,通过自动化候选航向搜索与多目标优化,选择兼顾覆盖质量、飞行效率与安全性的最优航线方向。项目涵盖从参数输入、摄影测量计算、地形与安全修正,到候选路线生成、综合评价与结果可视化的全流程,并构建了五万组模拟数据用于算法验证与模型训练,支持桌面交互、批量处理与服务化部署,适用于多种复杂场景下的无人机航测任务规划。 适合人群:具备一定MATLAB编程基础和摄影测量知识的科研人员、工程技术人员及高校师生,尤其适合从事无人机航测、地理信息系统(GIS)、遥感与测绘等相关领域的从业者。 使用场景及目标:① 实现无人机航测任务中地面分辨率与航线间距的精确计算与动态优化;② 解决复杂地形与风场环境下航线方向选择困难、覆盖质量难以保障的问题;③ 通过自动化设计减少人为经验依赖,提升航测任务的可靠性与效率;④ 为后续的三维建模、正射影像生成与灾害应急评估等应用提供高质量的数据基础。 阅读建议:建议读者结合文中提供的完整代码示例与GUI界面设计,逐步实践参数配置、模型计算与结果分析流程。重点关注摄影测量公式推导、地形修正策略与多目标优化算法的实现细节,并利用模拟数据进行敏感性分析与模型验证,以深入理解系统的设计理念与工程应用价值。

P3033 [USACO11NOV]Cow Steeplechase G(类似最小路径覆盖)

https://www.luogu.com.cn/problem/P3033 P3033 [USACO11NOV]Cow Steeplechase G 哭了哭了,本来想看网课的,这个题花了我快2个小时了。。。。还好是个蓝题,不然亏大了 认真总结下: 1.首先250250数据过万,肯定要使用链式前向星的方式存图。 2.本题难点在于建立图形,把竖着的线段作为上结点,与之相交的下结点建立线段;横着的直线作为下结点,求最大匹配树,这是是最小顶点覆盖 3.n-这个值,剩下的线段就互相没有关系,就是答案。 4.剩下的就

weixin_51934288的博客 243

【电力负荷预测】项目介绍 MATLAB实现基于BO-Transformer-LSTM贝叶斯优化算法(BO)优化Transformer-LSTM组合模型进行居民用户多步电力负荷预测(含模型描述及部分示例

内容概要:本文介绍了一个基于BO-Transformer-LSTM的组合模型,用于实现居民用户多步电力负荷预测的完整项目实例。该模型融合Transformer的全局注意力机制与LSTM的局部时序记忆能力,构建能够捕捉长时依赖与周期性特征的深度学习架构,并引入贝叶斯优化(BO)自动搜索最优超参数组合,提升预测精度与训练效率。项目涵盖从原始数据清洗、特征工程、滑动窗口样本构建、模型设计到超参数优化、反归一化及多步误差评估的全流程,强调时间顺序划分以防止信息泄露,并通过周期编码、外生变量融合等方式增强数据表达能力。文中提供了详细的MATLAB代码示例,包括数据预处理、网络搭建、贝叶斯优化配置和预测结果评估等关键步骤。 适合人群:具备一定机器学习和时间序列分析基础,熟悉MATLAB编程环境,从事电力系统预测、智能电网、负荷管理等相关领域的研究人员、工程师及研究生。 使用场景及目标:①应用于居民级或多用户聚合负荷的短期至中期多步预测(如未来24小时);②服务于配电系统运行调度、需求响应基线设定、家庭能源管理系统优化、分布式能源协调控制等实际工程场景;③为科研提供可复现的深度学习+贝叶斯优化的技术路线参考。 阅读建议:此资源以实际项目为导向,建议读者结合提供的代码逐步实现并调试模型,重点关注数据质量控制、时间特征编码、组合网络结构设计与贝叶斯优化稳定性之间的协同关系,在实践中深入理解多步预测中的误差累积机制与超参数敏感性问题。

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

91.91p13.space .php,91.91p13.space服务器iP

2019-11-10-----2021-03-1637.48.65.1552019-12-04-----2021-03-16162.210.199.852020-04-16-----2021-03-165.79.68.1092020-05-07-----2021-03-16207.244.67.1392020-07-01-----2021-03-1696.47.230.682020-12-07--...

weixin_35902800的博客 5704

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

91p05.space index.php,95.91p23.space服务器iP

2019-02-17-----2021-03-1631.13.77.552019-02-18-----2021-03-1669.171.244.112019-02-20-----2021-03-1631.13.85.82019-02-22-----2021-03-1669.171.244.152019-02-24-----2021-03-16174.37.54.202019-02-24-----2...

weixin_28692153的博客 6786

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

RK3588s Camera ISP调优详解(一)ISP调试工具及环境配置(附下载途径)

本文主要介绍了rkisp tuner工具的连接与使用,并附上了工具及依赖库的下载地址

zongheng_raobo的博客 6270

top.php,top.php

define('Copyright', '作者QQ:2280005200');define('ROOT_PATH', $_SERVER["DOCUMENT_ROOT"].'/');include_once ROOT_PATH.'function/global.php';$news = null;$db=new DB();$text = $db->query("SELECT `g_text` ...

weixin_39965794的博客 311

一文搞懂雷达脉冲压缩和匹配滤波器

为了解决传统单频脉冲雷达面临的作用距离和空间分辨力之间的矛盾,脉冲压缩理论被提出。在接收端设计一个和发射信号能够“共轭匹配”的网络来实现脉冲压缩。接收到的回波信号通过匹配滤波器时,滤波器的增益在信号越强的频率点越大;在信号越弱的频率点,增益越小,通过这样的方式使信号在时域更加集中。脉冲压缩技术大致可分为线性调频(LFM)和相位编码。其中LFM信号易于通过硬件或各种技术产生,但是进行匹配滤波后主旁瓣比高达13.2dB,在检测多个目标时,强目标的回波旁瓣可能会把弱小信号覆盖,导致弱小信号的检测受到影响。

FPGA入门到跑路 9935

95.91p30.space\/index.php,PHP常用的基本文件和目录操作总结

一、基本文件的操作文件的基本操作有:文件判断、目录判断、文件大小、读写性判断、存在性判断及文件时间等1:

weixin_42351362的博客 2412

YOLOv11改进 | Mamba-YOLOv11-L:基于SSM的高效全局建模,精度与效率的双重突破

摘要: 本文提出Mamba-YOLOv11-L,通过集成状态空间模型(SSM)改进YOLOv11的全局建模能力。针对YOLOv11在复杂场景中全局依赖缺失、精度-效率矛盾等问题,SSM以$O(N)$计算复杂度实现长程语义捕捉。改进后的模型在工业缺陷检测(Recall↑12%)、边缘设备部署(内存↓16%)、多尺度目标检测(小目标mAP↑9%)等场景表现优异,推理速度保持>40 FPS。核心创新包括轻量化SSM模块设计(稀疏状态转移+局部上下文融合)及与YOLOv11骨干的深度集成,代码实现展示了SSM

走向CTO的路上... 566

R语言 百度坐标转换至WGS84坐标

本文利用R语言封装了百度坐标转换至WGS84坐标的函数,亲测有效,提供了便捷的百度坐标转换方法。

qingchen98的博客 2135

[USACO11NOV]牛的障碍Cow Steeplechase(匈牙利算法)

洛谷传送门 题目描述: 给出N平行于坐标轴的线段,要你选出尽量多的线段使得这些线段两两没有交点(顶点也算),横的与横的,竖的与竖的线段之间保证没有交点,输出最多能选出多少条线段。 因为横的与横的,竖的与竖的没有交点,所以直接把相交的线段相连,然后肯定是个二分图。 选出多少个线段,就是求二分图的最大独立集,等于节点数(N) - 最大匹配数。 由于线段的4个坐标太大(X1_i, Y1...

weixin_30567225的博客 222

ShowDoc item_id 未授权SQL注入漏洞复现

2024年6月,ShowDoc官方发布新版本修复了一个SQL注入漏洞。鉴于该漏洞无前置条件,易于利用,且默认情况下可暴破用户token获取系统后台权限,建议所有使用该系统的企业尽快升级修复,以确保系统安全。

0xSec 2357

91.91p06./index.php?,index.html

welcome to my blogLi zhixue's BlogHomeArchivesAbout Li zhixue's Blog李志学的学习心得和技术博客我的第一篇博客文章 2021-01-06more>>Hello World Welcome to Hexo! This is y...

weixin_39754411的博客 5176

YOLOv12 改进 | Backbone改进 3

将CSP中的简单拼接改为可学习的特征选择门控,动态决定哪些特征流向下一层,同样再写这篇。:相比静态CSP的固定50/50分割,门控机制可学习0.3:0.7等最优比例。在输入端加入轻量SR模块,对下采样后的特征进行超分恢复,提升小目标检测能力。(小目标): 从 0.51 AP → 0.63 AP (+24%):采用ESPCN的高效亚像素卷积,避免传统插值的信息损失。:从通道级(SE)到空间级(Spatial)的多粒度控制。:结合浅层细节和深层语义,恢复小目标的纹理信息。

u012133341的博客 841

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

【Proteus仿真】51单片机+DAC0832+LM358放大电路波形发生器

perseverance51博客 5786

PHP H5微信授权

<?php /** * Created by PhpStorm. * User: wudi * Date: 2019/1/28 * Time: 10:31 */ namespace app\index\controller; use app\BaseController; use think\facade\view; use think\facade\DB; class Wxgetuserinfo extends BaseController { /** * 调用方

libertine的博客 608

Qt实现窗口自适应分辨率大小

如果希望窗口大小始终保持与屏幕分辨率一致,可以将上述代码放在窗口的resizeEvent()函数中。这样,每当窗口大小发生变化时,都会自动调用resizeEvent()函数,从而实现窗口大小的自适应调整。在Qt中,可以通过一些简单的方法实现窗口大小随分辨率变化而自适应调整。获取到当前屏幕的分辨率后,可以根据需要调整窗口的大小。无论在何种分辨率下运行应用程序,窗口都能够正确地自动调整大小,提供更好的用户体验。除了调整窗口大小,还可以考虑将窗口设置为最大化,以充分利用屏幕空间。步骤2:调整窗口大小。

FuJavascript的博客 3655

P3033 [USACO11NOV]牛的障碍Cow Steeplechase

P3033 [USACO11NOV]牛的障碍Cow Steeplechase 套路套路全是套路!二分图匹配问题全是套路! 这里分析一类常见的二分图匹配:线段相交 给定n根平行与x或y轴的线段,求最大独立集 最大独立集=总数-最小割=总数-最大流 匹配一下即可 记住!ij不分见祖宗!x1>x2,y1>y2未判见祖宗! 代码: #include<bits...

223

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

95.91p30.space\/index.php,space.php - osc_jb8w6ufb的个人空间 - OSCHINA - 中文开源技术交流社区...

1$_SERVER['PROCESSOR_ARCHITEW6432']AMD642$_SERVER['_FCGI_X_PIPE_']\\.\pipe\IISFCGI-aeb5be8d-990f-4537-9d14-9100a6c68c0a3$_SERVER['PHPRC']C:\Program Files (x86)\php\v5.4\4$_SERVER['PHP_FCGI_MAX_REQUEST...

weixin_42318812的博客 1209

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

91p05.space index.php,91p23.space

Domain Name: 91P23.SPACERegistry Domain ID: D53211933-CNICRegistrar WHOIS Server: whois.dynadot.comRegistrar URL: http://www.dynadot.comUpdated Date: 2020-12-10T22:29:43.0ZCreation Date: 2017-09-29T18...

weixin_36150816的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: 分块
下一篇: [LGOJ]P3147 [USACO16OPEN]262144 P
Modestr-E·X·L
博客等级 码龄7年 5粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值