CF884E Binary Matrix(骞舵煡闆?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF884E Binary Matrix(骞舵煡闆?相关的知识,希望对你有一定的参考价值。
鏍囩锛?a href='http://www.mamicode.com/so/1/pair' title='pair'>pair
play std pac namespace string class turn img鍒濅竴鐪嬶紝sb棰橈紝涓婂幓涓€涓苟鏌ラ泦锛屽緢蹇晩锛岃繑鍥炰竴涓狹LE锛屽畾鐫涗竴鐪嬶紝绯荤粺寮€鐨勫唴瀛樺緢灏忥紝浣嗘槸杩欎釜绠楁硶澶嶆潅搴﹀張鏄繖涔堟纭?/p>
鍥犳鑰冭檻浼樺寲鍐呭瓨锛岃繖鏍风敤婊氬姩鏁扮粍浼樺寲鍗冲彲
杩欓噷娉ㄦ剰涓€涓棶棰橈紝骞冲父骞舵煡闆嗕粠閭h竟鎸囬偅杈归兘鏄鐨勶紝浣嗘槸婊氬姩鏁扮粍灏变笉涓€鏍蜂簡锛屽浜庝笂涓€灞傜殑锛屼竴瀹氳鎸囧悜涓嬩竴灞傦紝鍥犱负濡傛灉鎸囧悜涓婁竴灞傦紝閭d箞鍦ㄥ仛鐨勬椂鍊欙紝涓婁笂灞傜殑淇℃伅宸茬粡琚粴鎺変簡銆傝繖閲屾槸涓粏鑺傦紝寰堝鏄撴兂涓嶆竻妤氬氨wa姝?/p>
#include<bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pll; const int N=1e6+10; const int mod=1e9+7; int a[4][100010]; int p[N]; int find(int x){ if(x!=p[x]){ p[x]=find(p[x]); } return p[x]; } int main(){ ios::sync_with_stdio(false); int n,m; cin>>n>>m; int ans=0; int i,j; for(i=1;i<=n;i++){ int now=i&1; string s; cin>>s; s=" "+s; for(int j=1;j<=m/4;j++){ int res; if(s[j]>=鈥?/span>0鈥?/span>&&s[j]<=鈥?/span>9鈥?/span>){ res=s[j]-鈥?/span>0鈥?/span>; } else{ res=s[j]-鈥?/span>A鈥?/span>+10; } a[now][j*4]=res&1,ans+=(res&1),res>>=1; a[now][j*4-1]=res&1,ans+=(res&1),res>>=1; a[now][j*4-2]=res&1,ans+=(res&1),res>>=1; a[now][j*4-3]=res&1,ans+=(res&1),res>>=1; } int tmp=now*m; for(int j=1;j<=m;j++){ p[tmp+j]=tmp+j; } for(int j=1;j<m;j++){ if(a[now][j]&&a[now][j+1]){ int pa=find(tmp+j); int pb=find(tmp+j+1); if(pa!=pb){ p[pb]=pa; ans--; } } } for(int j=1;j<=m;j++){ if(a[now][j]&&a[now^1][j]){ int pa=find(tmp+j); int pb=find((now^1)*m+j); if(pa!=pb){ p[pb]=pa; ans--; } } } } cout<<ans<<endl; return 0; }
以上是关于CF884E Binary Matrix(骞舵煡闆?的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 1091. Shortest Path in Binary Matrix
leetcode1284. Minimum Number of Flips to Convert Binary Matrix to Zero Matrix
[Leetcode] Binary search, Divide and conquer--240. Search a 2D Matrix II