日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bzoj3503: [Cqoi2014]和谐矩阵

發(fā)布時間:2023/11/30 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj3503: [Cqoi2014]和谐矩阵 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

高斯消元解異或方程組。學了bitset。對比如下

#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define REP(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #define clr(x,c) memset(x,c,sizeof(x)) int read(){int x=0;char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) x=x*10+c-'0',c=getchar();return x; } const int nmax=50; const int inf=0x7f7f7f7f; int xx[5]={0,0,0,1,-1}; int yy[5]={0,1,-1,0,0}; int a[nmax*nmax][nmax*nmax],ans[nmax*nmax],n,m; int id(int x,int y){return (x-1)*m+y; } void Gauss(int N,int M){REP(i,1,N){int j;for(j=i;j<=N&&!a[j][i];j++)if(j>N) continue;if(j!=i) REP(k,i,M) swap(a[i][k],a[j][k]);REP(j,i+1,N) if(a[j][i]) REP(k,i,M) a[j][k]^=a[i][k];}dwn(i,N,1){if(!a[i][i]) ans[i]=1;else{REP(j,i+1,N) a[i][M]^=(ans[j]*a[i][j]);ans[i]=a[i][M];}} } int main(){n=read(),m=read();REP(i,1,n) REP(j,1,m) REP(k,0,4) {int tx=i+xx[k],ty=j+yy[k];if(tx&&ty&&tx<=n&&ty<=m) a[id(i,j)][id(tx,ty)]=1;}Gauss(n*m,n*m+1);REP(i,1,n) {REP(j,1,m) printf("%d ",ans[id(i,j)]);printf("\n");}return 0; } #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<bitset> using namespace std; #define REP(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) #define clr(x,c) memset(x,c,sizeof(x)) int read(){int x=0;char c=getchar();while(!isdigit(c)) c=getchar();while(isdigit(c)) x=x*10+c-'0',c=getchar();return x; } const int nmax=2505;; const int inf=0x7f7f7f7f; int xx[5]={0,0,0,1,-1}; int yy[5]={0,1,-1,0,0}; int ans[nmax],n,m; bitset<nmax>a[nmax]; int id(int x,int y){return (x-1)*m+y; } void Gauss(int N,int M){REP(i,1,N){int j;for(j=i;j<=N&&!a[j][i];j++)if(j>N) continue;if(j!=i) swap(a[j],a[i]);REP(j,i+1,N) if(a[j][i]) a[j]^=a[i];}dwn(i,N,1){if(!a[i][i]) ans[i]=1;else{REP(j,i+1,N) if(a[i][j]) ans[i]^=ans[j];//a[i][M]^=ans[j];//a[i][M]^=(ans[j]*a[i][j]);}} } int main(){n=read(),m=read();REP(i,1,n*m) a[i].reset();REP(i,1,n) REP(j,1,m) REP(k,0,4) {int tx=i+xx[k],ty=j+yy[k];if(tx&&ty&&tx<=n&&ty<=m) a[id(i,j)][id(tx,ty)]=1;}Gauss(n*m,n*m+1);REP(i,1,n) {REP(j,1,m) printf("%d ",ans[id(i,j)]);printf("\n");}return 0; }

  

3503: [Cqoi2014]和諧矩陣

Time Limit:?10 Sec??Memory Limit:?128 MBSec??Special Judge
Submit:?877??Solved:?397
[Submit][Status][Discuss]

Description

我們稱一個由0和1組成的矩陣是和諧的,當且僅當每個元素都有偶數個相鄰的1。一個元素相鄰的元素包括它本
身,及他上下左右的4個元素(如果存在)。
給定矩陣的行數和列數,請計算并輸出一個和諧的矩陣。注意:所有元素為0的矩陣是不允許的。

Input

輸入一行,包含兩個空格分隔的整數m和n,分別表示矩陣的行數和列數。

Output


輸出包含m行,每行n個空格分隔整數(0或1),為所求矩陣。測試數據保證有解。

Sample Input

4 4

Sample Output

0 1 0 0
1 1 1 0
0 0 0 1
1 1 0 1

數據范圍
1 <=m, n <=40

HINT

Source

鳴謝Ljcc提供Spj

[Submit][Status][Discuss]

轉載于:https://www.cnblogs.com/fighting-to-the-end/p/5697878.html

總結

以上是生活随笔為你收集整理的bzoj3503: [Cqoi2014]和谐矩阵的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。