比赛 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