首页 > 编程知识 正文

gxo化妆品怎么样,gxo洗发水怎么样

时间:2023-05-04 13:35:21 阅读:34835 作者:2554

问题C:和或时间限制:4 Sec内存限制:512 MB

提出:278解决:78

[提交] [状态] [命题人:admin]

主题说明

Freda在学习了比特运算和矩阵之后,决定对这个简洁优美的运算,以及包含深层空间的结构进行更深入的研究。

对于由非负整数组成的矩阵,她定义矩阵的AND值是矩阵中所有数二进制AND ()的运算结果。 矩阵的OR值定义为矩阵中所有数量的二进制or(|)的运算结果。

给定NN的矩阵,她想求:

此矩阵所有子矩阵的AND值之和(所有子矩阵的AND值相加的结果)。

此矩阵所有子矩阵的OR值之和(所有子矩阵的OR值相加的结果)。

在下面的场景中,——Freda应该猜到了他不想花时间解决这样简单的问题,所以这个问题就交给你了。

因为答案可能非常大,所以只需要输出答案取109 7型的结果。

输入

第一行是表示矩阵大小的正整数n。

接着,n行、各行n个自然数表示矩阵的一行。 两个相邻自然数之间用一个或多个空格分隔。

输出功率

输出只有一行,包含两个用空格分隔的整数。 第一个必须是所有子矩阵的AND值之和除以109 7的馀数,第二个必须是所有子矩阵的OR值之和除以109 7的馀数。

样本输入复制样本数据

31 0 00 0 00 0 0样品输出

1 9

提示

该33矩阵包括9个11小矩阵、6个12小矩阵、6个21小矩阵、4个22小矩阵、3个13小矩阵、3个31小矩阵、2个23小矩阵、2个32小矩阵、1个33小矩阵

一个子矩阵(仅由第一行第一列中的元素构成的11矩阵)的AND值为1,其余子矩阵的AND值均为0,总计为1。

包含第1行第1列的其他元素的子矩阵有9个子矩阵,它们的OR值为1,剩下的子矩阵的OR值为0,总和为9。

写完之后,发现被卡住了,

在这里调换I,j的话,就是t。 (虽然在upc上没有死,但是晚了300ms。 不知道为什么,自从有人这里变了之后反而变快了。 )在upc上,libre也降了t。 ) )

for(intI=1; i=n; I ) for(intj=1; j=n; j ) MMP[I][j]=(a[I][j]1)==p )? 1 mmp[i][j - 1] : 0;

# include bits/stdc.husingnamespacestd; 泰普德夫龙龙LL; #definegetchar((p1==p2 ) p2=(P1=buf ) fread ) buf,1,121,stdin ),P1==P2 )? EOF : *p1 ) charbuf((121 )1),*p1=buf,*p2=buf; const int maxn=1e3 7,mod=1e9 7; int mmp[maxn][maxn],n,x; int a[maxn][maxn]; int Stk[maxn]; int Up[maxn],Dn[maxn]; int read () { int c=getchar、Nig=1、x=0; while (! isdigit(c ) c!='-'(c=getchar ); if(c=='-' ) Nig=-1,c=getchar ); while(isdigit(c ) ) x=) x1) x 3) ) c ^ '0)、c=getchar ); 返回Nig * x; } #定义读取读取() ll Add,ans ); LLsovle(intp ) for ) intI=1; i=n; I ) for(intj=1; j=n; j ) MMP[I][j]=(a[I][j]1)==p )? 1 mmp[i][j - 1] : 0; ll tmp=0; int Top=0; for(intj=1; j=n; j () { Top=0; for(intI=1; i=n; I () if ) MMP[I][j] ) { Up[i]=1; while (top MMP [ I ] [ j ] MMP [ STK [ top-1 ] [ j ] ) up[I]=up[--top]; Stk[Top ]=i; } else Top=Up[i]=0; } Top=0; for(intI=n; I; I--}{if(MMP[I][j]}{dn[I]=1; while (top MMP [ I ] [ j ]=MMP [ STK [ top-1 ] [ j ] ) dn[I]=dn[--top]; Stk[Top ]=i; } else Top=Dn[i]=0; tmp=1ll * up [ I ] * dn [ I ] * MMP [ I ] [ j ] % mod; if(tmp=mod ) tmp -=mod; } }返回tmp; (}int main ) ) (/Scanf ),n ); n=引线; for(intI=1; i=n; I ) for(intj=1; j=n; j(//Scanf('%d ',a[i][j] ); a[i][j]=read; add=1ll*n*n*(n1 ) ) n1 )/4 % mod; ll ans1=0,ans2=0; for(intk=0,tp=1; k=30; k,tp=1) anS1=sovle(1) * tp % mod; if(anS1=mod ) ans1 -=mod; ans2=(添加求解(0) mod ) % mod * tp % mod; if(ans2=mod ) ans2 -=mod; for(intI=1; i=n; I ) for(intj=1; j=n; j ) a(I ) ) j )=1; }printf('%lld%lld(n ),ans1,ans2); 返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  • 相关阅读