zoj 3954 思维+ 码力 training 2

来源:互联网 发布:对艺术的知乎 编辑:程序博客网 时间:2024/05/20 07:38


可以说自己来连arr那个地方都不会用。。

思路:

相当于做列变换但是能够与原来的式子匹配。。

那么不管怎样,给原来的图形+p,,给现在的图形+p,排序后都要是相等的,否则就不可以了


#include<bits/stdc++.h>#define ll long long#define sf scanf#define mem(a,b) memset(a,b,sizeof(a));using namespace std;char mmp[15][15]={    {"1111111"},    {"1001111"},    {"0010010"},    {"0000110"},    {"1001100"},    {"0100100"},    {"0100000"},    {"0001111"},    {"0000000"},    {"0000100"},};int arr[20];int Mask[20];int msk[20];char tmp[20][20];int main(){    int t;    int n;    scanf("%d",&t);    while(t--){        sf("%d",&n);        for(int i=1;i<=n;++i){            sf("%d",&arr[i]);            sf("%s",tmp[arr[i]]);//自己真的可能不会用这个        }        mem(Mask,0);mem(msk,0);        for(int i=1,p=1;i<=n;++i,p<<=1){            for(int k=0;k<7;++k){                if(mmp[arr[i]][k]=='0')                    Mask[k]+=p;                if(tmp[arr[i]][k]=='0')                    msk[k]+=p;            }        }        sort(msk,msk+7);        sort(Mask,Mask+7);        int fg=1;        for(int i=0;i<7;++i){            if(Mask[i]!=msk[i]){                fg=0;break;            }        }        printf(fg?"YES\n":"NO\n");    }}





0 0
原创粉丝点击