time limit: 1 second
memory limit: 128 mb
【問題描述】
為了增強幼兒園小朋友的數數能力,小虎老師給了乙個家庭遊戲作業。讓小虎那一塊空的圍棋盤,隨機在一些方格中放些棋子
(有黑白兩種顏色),如果乙個方格和它的上、下、左、右四個方格之一有相同顏色的棋子,則認為兩個格仔是相互連通的。
這期間,要求小虎不斷統計共有多少個連通塊。
如下圖是乙個5*9的一塊棋盤,其中「.「表示空格,」*「表示黑棋子,」@「表示白棋子。則有4塊連通子塊。
哥哥大虎在一邊看一邊想,如果棋盤是n*n的,共放了m個棋子,如何使用計算機解決這個問題呢?
【輸入格式】
第一行兩個整數:n,m 接下來有m行,每行三個整數:c x y(0<=c<=1,1<=x,y<=n)。分別表示依次放入棋子的顏色(0表示白色,1表示黑色)、要放入格仔的橫座標和格仔的縱座標。
【輸出格式】
共m行。第i行乙個整數,表示放入第i個棋子後,當前有多少個棋子連通塊。
【資料規模】
30%資料:1<=n<=10 60%資料:1<=n<=100 100%資料:1<=m<=n*n。n<=500。
sample input1
3 5
1 1 1
1 1 2
0 2 2
1 3 1
1 2 1
sample output1
1 1
2 3
2sample input2
3 5
1 1 2
1 2 1
1 3 2
1 2 3
1 2 2
sample output2
1 2
3 4
1【題目鏈結】:
【題意】
中文題
【題解】
每次放下棋子之後,連通塊遞增1;
看看放下去的棋子所在的位置的四周有沒有和它的顏色相同的棋子;
如果有的話,用並查集的找爸爸函式看看它們倆是不是連在一起的,如果不是連在一起的則把它們連在一起;
然後連通塊遞減1;
然後輸出答案就好;
(x,y)座標可以一一對應乙個線性的數字->(x-1)*n+y;
【完整**】
#include
#include
#include
#include
using
namespace
std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define ll long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%i64d",&x)
typedef pair pii;
typedef pairpll;
const
int dx[9] = ;
const
int dy[9] = ;
const
double pi = acos(-1.0);
const
int maxn = 510;
int n,m,a[maxn][maxn],cnt = 0;
int f[maxn*maxn];
int change(int x,int y)
int ff(int x)
int main()}}
printf("%d\n",cnt);
}return
0;}
硬幣遊戲 Project Euler 232
原帖 project euler 上最近的題目都還比較意思,來看看前些天剛剛新鮮出爐的一道題 problem232 大意如此 說,有這樣乙個硬幣遊戲,需要兩個玩家參與,我們不防分別將他們稱為玩家 1和玩家 2。遊戲規則如下 兩個玩家輪流來擲硬幣。玩家 1每次只能擲一次,若是正面向上,則得 1分,否則...
深度學習與圍棋遊戲 筆記 1
最近,搞到一本書 deep learning and the game of go 歐美書商好像有種習慣,科技方面尤其程式設計相關的電子書,銷售一段時間後會公開放到網上,供人免費下載。這本書就來源於此。估計,有社會資本支援書商的善舉。希望國內資本雄厚的企業,向西方學習,鼓勵支援國內書商也這樣做。第1...
深度學習與圍棋遊戲 筆記 2
教機器學習的內容 布局模型庫。由高手布局棋譜中的高頻率走步構成。建立棋局狀態搜尋樹。儘量減少備選的下一步棋。估算每步棋的價值。衡量機械人的棋力 傳統的日本級段制。與機械人或者人模擬賽測定。包括以下內容 建立目錄 dlgo,其下建 3 個檔案 檔案 init py內容為空。在模組 gotype.py ...