2388: 【入门】【P5729】工艺品制作
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:50
解决:18
题目描述
现有一个长宽高分别为 组成的实心玻璃立方体,可以认为是由 的数个小方块组成的,每个小方块都有一个坐标 。现在需要进行 次切割。每次切割给出 这 6 个参数,保证 ,,;每次切割时,使用激光工具切出一个立方体空洞,空洞的壁平行于立方体的面,空洞的对角点就是给出的切割参数的两个点。
换句话说,所有满足 ,, 的小方块 的点都会被激光蒸发。例如有一个 的大方块,其体积为 ;给出参数 时,中间的 块小方块就会被蒸发,剩下 个小方块。现在想知道经过所有切割操作后,剩下的工艺品还剩下多少格小方块的体积?
输入
第一行三个正整数 。
第二行一个正整数 。
接下来 行,每行六个整数 。
输出
输出一个整数表示答案。
样例输入 复制
4 4 4
1
1 1 1 2 2 2
样例输出 复制
56
提示
数据保证,,。,,。
#include<bits/stdc++.h> using namespace std; int main(){ int v[22][22][22],w,x,h,q,x1,x2,y1,y2,z1,z2,ans=0; cin>>w>>x>>h>>q; for (int i=1;i<=w;i++) for (int j=1;j<=x;j++) for (int k=1;k<=h;k++) v[i][j][k]=1; //先把三维数组的每个位置赋值为1 while (q--) { cin>>x1>>y1>>z1>>x2>>y2>>z2; for (int i=x1;i<=x2;i++) for (int j=y1;j<=y2;j++) for (int k=z1;k<=z2;k++) v[i][j][k]=0; //对每个操作,把删掉的小方块所对应的数组位置赋值为0 } for (int i=1;i<=w;i++) for (int j=1;j<=x;j++) for (int k=1;k<=h;k++) ans+=v[i][j][k]; //所有操作结束之后,对每个小方块看一下是1还是0,计算答案 cout<<ans<<endl; return 0; }