矩形
问题 A: 矩形
题目描述
给出三个矩形,第i个矩形的左下角坐标为(xi,yi),右上角坐标为(ai,bi)。
求同时被这三个矩形覆盖的面积。
输入
输入共三行,第i行包含四个非负整数,依次表示xi,yi,ai,bi。
输出
输出共1行,输出1个整数,表示最终答案。
样例输入
【样例1】 0 0 2 3 1 1 3 4 0 0 99 99 【样例2】 0 0 2 3 1 1 3 4 3 4 5 6 【样例3】 10 10 22 23 1 1 23 24 3 4 25 26
样例输出
【样例1】2 【样例2】0 【样例3】156
提示
对于 30% 的数据,0 ≤ xi ≤ ai ≤ 5,0 ≤ yi ≤ bi ≤ 5。
对于 60% 的数据,0 ≤ xi ≤ ai ≤ 100,0 ≤ yi ≤ bi ≤ 100。
对于所有测评数据,0 ≤ xi ≤ ai ≤ 10^9,0 ≤ yi ≤ bi ≤ 10^9。
分析
画图多看看,三重叠的左下角是三个矩形里左下角x
和y
都最大的,三重叠的右上角是三个矩阵右上角x
和y
最小的
代码
#define int long long signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); // // freopen("E:/Code/C++/untitled1/input.txt","r",stdin); // freopen("output.txt","w",stdout); int a[4],b[4],c[4],d[4]; for (int i = 0;i < 3;++i) cin >> a[i] >> b[i] >> c[i] >> d[i]; int x1 = max(a[0],max(a[1],a[2])); int y1 = max(b[0],max(b[1],b[2])); int x2 = min(c[0],min(c[1],c[2])); int y2 = min(d[0],min(d[1],d[2])); if (x1 <= x2 && y1 <= y2) cout << (x2-x1)*(y2-y1); else cout << 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现