| 比赛 |
2026.4.11 |
评测结果 |
AAAWWTTTTT |
| 题目名称 |
与或和 |
最终得分 |
30 |
| 用户昵称 |
郑霁桓 |
运行时间 |
15.564 s |
| 代码语言 |
C++ |
内存使用 |
37.16 MiB |
| 提交时间 |
2026-04-11 10:58:53 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,a[1005][1005],b[20][1005][1005],c[20][1005][1005],lg[1005],s1,s2,pp;
inline int yu(int x,int xx,int y){
int ln=lg[xx-x+1];
return b[ln][xx][y]&b[ln][x+(1<<ln)-1][y];
}
inline int ho(int x,int xx,int y){
int ln=lg[xx-x+1];
return c[ln][xx][y]|c[ln][x+(1<<ln)-1][y];
}
int main(){
freopen("andorsum.in","r",stdin);
freopen("andorsum.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
b[0][i][j]=c[0][i][j]=a[i][j];
}
lg[i]=lg[i-1]+(1<<(lg[i-1]+1)==i);
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=1;k<=10&&i>=(1<<k);k++){
b[k][i][j]=b[k-1][i-(1<<(k-1))][j]&b[k-1][i][j];
c[k][i][j]=c[k-1][i-(1<<(k-1))][j]|c[k-1][i][j];
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
for(int k=i;k<=n;k++){
int ps1=yu(i,k,j),ps2=ho(i,k,j);
s1+=ps1,s2+=ps2,pp=1;
for(int l=j+1;l<=n;l++){
if(ps1==0&&ps2==(1<<7)-1){
s2+=((1<<7)-1)*(n-l+1);
break;
}
ps1&=yu(i,k,l);
ps2|=ho(i,k,l);
s1+=ps1;
s2+=ps2;
}
}
}
}
cout<<s1<<" "<<s2<<"\n";
return 0;
}
//2n