news 2026/8/7 10:17:48

USACO历年青铜组真题解析 | 2018年1月Blocked Billboard II

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
USACO历年青铜组真题解析 | 2018年1月Blocked Billboard II

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总贴:USACO历年青铜组真题解析 | 汇总-CSDN博客


【题目来源】

洛谷:[P1696 USACO18JAN] Blocked Billboard II B - 洛谷 (luogu.com.cn)

【题目描述】

奶牛Bassie想要覆盖一大块广告牌,她在之前已经覆盖了一小部分广告牌(但覆盖的这块面积不一定在广告牌上)

现在她要取一块足够大的布来将剩下的部分覆盖,问至少要多大的矩形的布才能覆盖剩下的广告牌。

【输入】

输入共两行。

第一行四个整数,l 1 l_1l1,****r 1 r_1r1,****l 2 l_2l2,****r 2 r_2r2,描述广告牌左下和右上两个坐标**( l 1 , r 1 ) (l_1,r_1)(l1,r1)( l 2 , r 2 ) (l_2,r_2)(l2,r2)**。

第二行四个整数,x 1 , y 1 , x 2 , y 2 x_1,y_1,x_2,y_2x1,y1,x2,y2,描述覆盖的位置的左下和右上两个坐标**( x 1 , y 1 ) (x_1,y_1)(x1,y1)( x 2 , y 2 ) (x_2,y_2)(x2,y2)**。

所有数值都在**− 1000 ∼ 1000 -1000\sim 100010001000**范围内。

【输出】

一行一个整数,表示需要的最小的矩形的布。

【输入样例】

2 1 7 4 5 -1 10 3

【输出样例】

15

【算法标签】

《洛谷 P1696 Blocked Billboard II》 #USACO# #O2优化# #2018#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;inta[5],b[5];// 存储两个矩形的坐标:a[广告牌], b[覆盖物]intans=0,ans2=0;// ans: 未被覆盖的面积, ans2: 被覆盖的面积intx[5],y[5];// 存储所有x坐标和y坐标(用于网格划分)// 矩形的四个顶点坐标intx11,x12,x21,x22;// 广告牌和覆盖物的x坐标inty11,y12,y21,y22;// 广告牌和覆盖物的y坐标ifstreamfilein("billboard.in");ofstreamfileout("billboard.out");/** * 判断网格单元是否在矩形内部 * @param i x方向网格索引 * @param j y方向网格索引 * @param k 矩形的坐标数组 * @return 如果网格单元完全在矩形内返回true,否则false */boolin(inti,intj,intk[]){// 检查网格单元是否完全包含在矩形内if(x[i]>=k[1]&&x[i+1]<=k[3]&&y[j]>=k[2]&&y[j+1]<=k[4]){returntrue;}returnfalse;}intmain(){// 输入广告牌的坐标(左下角和右上角)for(inti=1;i<=4;i++){filein>>a[i];}x11=a[1];// 广告牌左下角xx12=a[3];// 广告牌右上角xy11=a[2];// 广告牌左下角yy12=a[4];// 广告牌右上角y// 输入覆盖物的坐标(左下角和右上角)for(inti=1;i<=4;i++){filein>>b[i];}x21=b[1];// 覆盖物左下角xx22=b[3];// 覆盖物右上角xy21=b[2];// 覆盖物左下角yy22=b[4];// 覆盖物右上角y// 收集所有x坐标和y坐标x[1]=a[1];// 广告牌左边界x[2]=a[3];// 广告牌右边界x[3]=b[1];// 覆盖物左边界x[4]=b[3];// 覆盖物右边界y[1]=a[2];// 广告牌下边界y[2]=a[4];// 广告牌上边界y[3]=b[2];// 覆盖物下边界y[4]=b[4];// 覆盖物上边界// 对坐标进行排序,用于网格划分sort(x+1,x+4+1);sort(y+1,y+4+1);// 特殊情况处理:覆盖物完全包含广告牌或广告牌完全包含覆盖物if((y22>=y12&&y11>=y21&&x12>=x22&&x21>=x11)||(y12>=y22&&y21>=y11&&x22>=x12&&x11>=x21)){// 输出广告牌的面积(完全被覆盖或完全覆盖)fileout<<(y12-y11)*(x12-x11)<<endl;return0;}// 遍历所有网格单元(3x3网格)for(inti=1;i<=3;i++){for(intj=1;j<=3;j++){// 检查网格单元是否在广告牌内但不在覆盖物内if(in(i,j,a)&&!in(i,j,b)){// 计算未被覆盖的网格单元面积并累加ans+=(y[j+1]-y[j])*(x[i+1]-x[i]);}// 检查网格单元是否同时在广告牌和覆盖物内if(in(i,j,a)&&in(i,j,b)){// 计算被覆盖的网格单元面积并累加ans2+=(y[j+1]-y[j])*(x[i+1]-x[i]);}}}// 特殊情况:部分覆盖且覆盖区域不规则if(ans2%(y12-y11)!=0&&ans2%(x12-x11)!=0){// 使用整个广告牌的面积作为结果ans=(y12-y11)*(x12-x11);}// 输出未被覆盖的面积fileout<<ans<<endl;return0;}

【运行结果】

2 1 7 4 5 -1 10 3 15
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 0:44:27

ResNet18迁移学习实战:云端GPU+预训练模型省时90%

ResNet18迁移学习实战&#xff1a;云端GPU预训练模型省时90% 引言 参加Kaggle比赛时&#xff0c;你是否遇到过这样的困境&#xff1a;从零开始训练一个深度学习模型需要耗费数天时间&#xff0c;而比赛截止日期却近在眼前&#xff1f;这就是为什么迁移学习会成为计算机视觉竞…

作者头像 李华
网站建设 2026/8/6 16:04:33

ResNet18图像分类5大技巧:云端GPU助你快速验证

ResNet18图像分类5大技巧&#xff1a;云端GPU助你快速验证 引言 作为一名Kaggle竞赛选手&#xff0c;你是否经常遇到这样的困扰&#xff1a;本地电脑训练ResNet18模型速度慢如蜗牛&#xff0c;调参一次等半天&#xff0c;比赛截止日期却近在眼前&#xff1f;别担心&#xff0…

作者头像 李华
网站建设 2026/8/5 5:33:52

发射机功率放大器设计:模拟电子技术实战项目

发射机功率放大器设计&#xff1a;从理论到实战的模拟电子深度实践在5G、物联网和专用无线通信设备快速发展的今天&#xff0c;我们常常把注意力放在数字基带处理、算法优化和软件定义无线电上。但别忘了——无论多么智能的调制方式&#xff0c;最终都得靠一个实实在在的模拟电…

作者头像 李华
网站建设 2026/7/26 2:50:03

3步搞定Windows 9x系统CPU性能优化完整指南

3步搞定Windows 9x系统CPU性能优化完整指南 【免费下载链接】patcher9x Patch for Windows 9x to fix CPU issues 项目地址: https://gitcode.com/gh_mirrors/pa/patcher9x Windows 9x系统在现代硬件上运行时经常遇到CPU性能瓶颈和兼容性问题。本项目专门解决Windows 95…

作者头像 李华
网站建设 2026/7/29 3:14:57

3分钟掌握AI唇同步:LatentSync颠覆性技术全解析

3分钟掌握AI唇同步&#xff1a;LatentSync颠覆性技术全解析 【免费下载链接】LatentSync Taming Stable Diffusion for Lip Sync! 项目地址: https://gitcode.com/gh_mirrors/la/LatentSync 在视频制作和虚拟人开发领域&#xff0c;唇同步一直是技术难题。传统方案往往面…

作者头像 李华
网站建设 2026/7/31 19:53:25

在 SAP BTP ABAP environment 里让 Business Configuration 像 SM30 一样可直接维护:关闭 Transport 控制的实现路径

为什么会有人想在 Business Configuration 里绕开 Transport 在企业系统里,配置类数据之所以被当成 Customizing 来管理,本质原因只有一个:它会改变业务流程的行为,影响面往往比一条普通主数据大得多。也正因为如此,Business Configuration 这条路径默认把 CTS 运输机制绑…

作者头像 李华