题意
1.给出正方体的长,提问次数
2.每一个帽子都有一个颜色,颜色共26种,用26个大写字母
来表示
3.初始化所有帽子为绿色
4.操作:将长方形区域内的所有帽子颜色
变为x色
code↓
for(int i=x2;i<=x3;i++){
for(int j=y4;j<=y5;j++){
for(int k=z2;k<=z3;k++){
a[i][j][k]=o;
}
}
}
5.操作:将长方形区域内的所有x颜色
的帽子变为绿色
for(int i=x2;i<=x3;i++){
for(int j=y4;j<=y5;j++){
for(int k=z2;k<=z3;k++){
if(a[i][j][k]==o) a[i][j][k]=7;
}
}
}
解释
为什么这里的将帽子颜色变为绿色
是将
a
[
i
]
[
j
]
[
k
]
a[i][j][k]
a[i][j][k]赋值为7
?
因为当将char
强制转换为int
后减去64
时'A'=1
,此时'G'=7
code↓
#include <bits/stdc++.h>
using namespace std;
int main(){
char a;
cin>>a;
cout<<int(a)-64;
return 0;
}
总结code↓:
因为
m
a
x
(
n
)
∗
m
a
x
(
n
)
∗
m
a
x
(
n
)
∗
m
a
x
(
Q
)
=
12800000
max(n)*max(n)*max(n)*max(Q)=12800000
max(n)∗max(n)∗max(n)∗max(Q)=12800000
所以直接
n
3
n^{3}
n3 暴力即可,注意数组开大一点
#include <bits/stdc++.h>
using namespace std;
int n,q,op,a[42][42][42],x0,x1,y2,y3,z0,z1;
int find(int x2,int y4,int z2,int x3,int y5,int z3){
int sum=0;
for(int i=x2;i<=x3;i++){
for(int j=y4;j<=y5;j++){
for(int k=z2;k<=z3;k++){
if(a[i][j][k]==7) sum++;
}
}
}
return sum;
}
int col(int x2,int y4,int z2,int x3,int y5,int z3,int o){
// cout<<x2<<" "<<x3<<" "<<y4<<" "<<y5<<" "<<z2<<" "<<z3<<"*"<<endl;
for(int i=x2;i<=x3;i++){
for(int j=y4;j<=y5;j++){
for(int k=z2;k<=z3;k++){
a[i][j][k]=o;
// cout<<i<<" "<<j<<" "<<k<<endl;
}
}
}
return 0;
}
int col2(int x2,int y4,int z2,int x3,int y5,int z3,int o){
for(int i=x2;i<=x3;i++){
for(int j=y4;j<=y5;j++){
for(int k=z2;k<=z3;k++){
if(a[i][j][k]==o) a[i][j][k]=7;
}
}
}
return 0;
}
//int print(){
// for(int i=1;i<=n;i++){
// for(int j=1;j<=n;j++){
// for(int k=1;k<=n;k++){
// cout<<i<<" "<<j<<" "<<k<<" "<<a[i][j][k]<<endl;
// }
// }
// }
// return 0;
//}
int main(){
// freopen("hat.in","r",stdin);
// freopen("hat.out","w",stdout);
cin>>n>>q;
col(1,1,1,n,n,n,7);
for(int i=1;i<=q;i++){
cin>>op;
if(op==0){
cin>>x0>>y2>>z0>>x1>>y3>>z1;
cout<<find(x0,y2,z0,x1,y3,z1)<<endl;
}
if(op==1){
char ow;
cin>>x0>>y2>>z0>>x1>>y3>>z1>>ow;
col(x0,y2,z0,x1,y3,z1,int(ow-64));
// print();
// cout<<endl;
}
if(op==2){
char ow;
cin>>x0>>y2>>z0>>x1>>y3>>z1>>ow;
col2(x0,y2,z0,x1,y3,z1,int(ow-64));
// print();
// cout<<endl;
}
}
return 0;
}