news 2026/5/26 21:42:28

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/5/19 7:52:03

OpenWrt路由器固件定制终极指南:60分钟打造专属网络系统

OpenWrt路由器固件定制终极指南&#xff1a;60分钟打造专属网络系统 【免费下载链接】OpenWrt_x86-r2s-r4s-r5s-N1 一分钟在线定制编译 X86/64, NanoPi R2S R4S R5S R6S, 斐讯 Phicomm N1 K2P, 树莓派 Raspberry Pi, 香橙派 Orange Pi, 红米AX6, 小米AX3600, 小米AX9000, 红米A…

作者头像 李华
网站建设 2026/5/1 10:29:42

物体识别模型怎么部署?ResNet18云端方案详解

物体识别模型怎么部署&#xff1f;ResNet18云端方案详解 引言 作为一名刚毕业的计算机视觉方向学生&#xff0c;你可能在学校实验室跑过ResNet18的demo&#xff0c;但当面试官问起"如何将模型部署到生产环境"时&#xff0c;是否感到无从下手&#xff1f;别担心&…

作者头像 李华
网站建设 2026/5/23 4:20:43

5分钟玩转MCP Inspector:可视化调试神器实战手册

5分钟玩转MCP Inspector&#xff1a;可视化调试神器实战手册 【免费下载链接】inspector Visual testing tool for MCP servers 项目地址: https://gitcode.com/gh_mirrors/inspector1/inspector 还在为MCP服务器调试而头疼吗&#xff1f;MCP Inspector这款可视化调试工…

作者头像 李华
网站建设 2026/5/21 13:48:22

零样本分类性能优化:并发处理的配置技巧

零样本分类性能优化&#xff1a;并发处理的配置技巧 1. 引言&#xff1a;AI 万能分类器的应用价值与挑战 在当今信息爆炸的时代&#xff0c;文本数据的自动化处理已成为企业提升效率的核心手段。传统的文本分类方法依赖大量标注数据和模型训练周期&#xff0c;难以应对快速变…

作者头像 李华
网站建设 2026/5/23 11:29:04

Multisim主数据库使用场景适配:不同版本适用领域图解说明

如何选对Multisim版本&#xff1f;主数据库差异决定你的设计成败你有没有遇到过这样的情况&#xff1a;在Multisim里搭好电路&#xff0c;仿真结果却和实际测试差得离谱&#xff1f;或者团队中两个人用的“同一个芯片”符号长得不一样、参数也不一致&#xff1f;又或者学生做课…

作者头像 李华
网站建设 2026/5/1 10:38:16

5步搞定Android Scene框架:告别Fragment的页面管理新方案

5步搞定Android Scene框架&#xff1a;告别Fragment的页面管理新方案 【免费下载链接】scene Android Single Activity Applications framework without Fragment. 项目地址: https://gitcode.com/gh_mirrors/scene/scene 想要摆脱Android开发中Fragment的复杂性吗&…

作者头像 李华