5 solutions
-
4
#include <bits/stdc++.h> using namespace std; bool a[25][25][25]; int main(int argc, char **argv){ int w,x,h,q,x1,x2,y1,y2,z1,z2,cnt = 0; scanf("%d %d %d\n%d",&w,&x,&h,&q); while (q--){ scanf("%d %d %d %d %d %d",&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++){ a[i][j][k] = 1; } } } } for (int i = 1;i <= w;i++){ for (int j = 1;j <= x;j++){ for (int k = 1;k <= h;k++){ if(!a[i][j][k]){ cnt++; } } } } cout << cnt; return 0; } /* [[[2,1,0,0], [1,1,0,0], [0,0,0,0], [0,0,0,0] ], [[1,1,0,0], [1,2,0,0], [0,0,0,0], [0,0,0,0] ], [[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0] ], [[0,0,0,0], [0,0,0,0], [0,0,0,0], [0,0,0,0] ]] */
-
2
#include <iostream> using namespace std; int w,x,h,ans,q; int a[21][21][21];//立方体模型 int main() { cin>>w>>x>>h>>q; while(q--) { int x1,y1,z1,x2,y2,z2; cin>>x1>>y1>>z1>>x2>>y2>>z2;//输入 for(int i=min(x1,x2); i<=max(x1,x2); i++) { for(int j=min(y1,y2); j<=max(y1,y2); j++) { for(int k=min(z1,z2); k<=max(z1,z2); k++) { a[i][j][k]=1; //标记每个已经被切割过的点 } } } } for(int i=1; i<=w; i++) { for(int j=1; j<=x; j++) { for(int k=1; k<=h; k++) { if(a[i][j][k]==0) { ans++;//判断是否切割 } } } } cout<<ans<<endl;//输出 return 0;//完结撒花 }
-
0
#include <bits/stdc++.h> using namespace std; int xxx,yyy,zzz,sum=0,q; bool ppp[25][25][25]; int main(){ int x1,x2,y1,y2,z1,z2; cin>>xxx>>yyy>>zzz>>q; for(int i=0;i<q;i++){ cin>>x1>>y1>>z1>>x2>>y2>>z2; for(int x=x1-1;x<x2;x++)for(int y=y1-1;y<y2;y++)for(int z=z1-1;z<z2;z++)ppp[x][y][z]=1; } for(int x=0;x<xxx;x++)for(int y=0;y<yyy;y++)for(int z=0;z<zzz;z++)if(ppp[x][y][z]==0)sum++; cout<<sum; return 0; }
-
0
纯暴力
#include<iostream> using namespace std; int main(){ int w; int x; int h; int q; cin >>w >>x >>h >>q; bool a[w+1][x+1][h+1]; for(int i=1;i<w+1;i++) for(int j=1;j<x+1;j++) for(int l=1;l<h+1;l++) a[i][j][l]=1; for(int i=0;i<q;i++){ int x1; int x2; int y1; int y2; int z1; int z2; cin >>x1 >>y1 >>z1 >>x2 >>y2 >>z2; for(int i=x1;i<=x2;i++) for(int j=y1;j<=y2;j++) for(int l=z1;l<=z2;l++) a[i][j][l]=0; } int ans=0; for(int i=1;i<w+1;i++) for(int j=1;j<x+1;j++) for(int l=1;l<h+1;l++) if(a[i][j][l]==1) ans++; cout<<ans; }
-
0
#include <bits/stdc++.h> using namespace std; int a[30][30][30]; int main() { int w,x,y,q; cin>>w>>x>>y; cin>>q; int s=0; for(int i=0;i<w;i++){ for(int j=0;j<x;j++){ for(int k=0;k<y;k++){ a[w][x][y]=0; } } } for(int i=1;i<=q;i++){ int x1,y1,z1,x2,y2,z2; cin>>x1>>y1>>z1>>x2>>y2>>z2; for(int j=min(x1,x2);j<=max(x1,x2);j++){ for(int j1=min(y1,y2);j1<=max(y1,y2);j1++){ for(int j2=min(z1,z2);j2<=max(z1,z2);j2++){ if(a[j][j1][j2]!=1){ s++; } a[j][j1][j2]=1;
} } } } cout<<w*x*y-s; return 0;
}
- 1
Information
- ID
- 902
- Time
- 1000ms
- Memory
- 125MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 84
- Accepted
- 35
- Uploaded By