時間限制:
10000ms
單點時限:
1000ms
記憶體限制:
256mb
小hi有一塊由nxm個單位正方形組成的矩形。現在小ho在某些單位正方形上畫了一道分割線,這條分割線或者是單位正方形的主對角線(用'\'表示),或者是副對角線(用'/'表示)。
現在小hi想知道這些分割線把nxm的矩形分割成了多少塊區域。
例如
/\就把2x2的矩形分成了5個區域。\/
/\/\把3x4的矩形分成了7個區域。\ /
\/\
第一包含兩個整數n和m。(1 <= n, m <= 100)
以下n行每行包含m個字元。每個字元只可能是/\或者空格。
分割成的區域數目。
樣例輸入
3 4/\/\
\ /
\/\
樣例輸出
7
解題思路:
首先看到這題,第一反應就和搜尋的入門題很像,不過,由於這個輸入的單符號資訊量很大,不好空位。於是我們就可把每個字元的位置拆成乙個3*3個小矩陣(表示成2*2的矩陣會在有相鄰的平行的線時出問題),然後就可以很好的表示空位了,然後再dfs即可。
ac**:
#include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
#define fi first
#define se second
#define mem(a,b) memset((a),(b),sizeof(a))
const int maxn=100+2;
const int maxl=maxn*3;
const int dy=,dx=;
int n,m;
bool maze[maxl][maxl];
inline bool in(int y,int x)
void dfs(int y,int x)
}}int main()
{ while(~scanf("%d %d",&n,&m))
{getchar();
mem(maze,0);
for(int i=0;i
hihoCoder 1040 矩形判斷
描述 給出平面上4條線段,判斷這4條線段是否恰好圍成乙個面積大於0的矩形。輸入 輸入第一行是乙個整數t 1 t 100 代表測試資料的數量。每組資料報含4行,每行包含4個整數x1,y1,x2,y2 0 x1,y1,x2,y2 100000 其中 x1,y1 x2,y2 代表一條線段的兩個端點。輸出 ...
hihocoder 1476 矩形計數
顯然就是容斥原理了。先算出所有的矩陣一共有多少個 ll sum n n 1 2 m m 1 2 然後考慮對於任取x個黑色方框,他們組成乙個新的矩形,然後計算有多少個矩陣會覆蓋整個矩形,也即,兩條邊所夾住的對頂兩個小正方形的所有點的乘積 奇減偶加即可 include using namespace s...
hihoCoder1040 矩形判斷
大體思路是可以出來的,就是先判斷能否組成四邊形,然後再判斷能否組成矩形。四邊形這部分比較難搞,但是我們有st l 啊,直接自定義乙個小於號,然後把所有的點扔進se t 最後看下si ze是不是等於 4 就好了。好,我們已經知道了這是乙個四邊形,再怎麼判斷它是否是矩形?思來想去啊,似乎計算幾何中沒有簡...