列舉每個空格點的位置,然後判水平垂直以及兩條對角線即可。判的時候可以沿那個方向往兩邊走,有連續棋子多於4個的話就獲勝。
#include using namespace std;
int n = 24;
char mmap[30][30];
char go;
struct point
;vectorv;
bool tran(int x, int y)
ny = y + 1;
while(ny <= n && mmap[nx][ny] == go)
if(cnt >= 4) return 1;
else return 0;
}bool vertical(int x, int y)
nx = x + 1;
while(nx <= n && mmap[nx][ny] == go)
if(cnt >= 4) return 1;
else return 0;
}bool maindiagonal(int x, int y)
nx = x + 1, ny = y + 1;
while(nx <= n && ny <= n && mmap[nx][ny] == go)
if(cnt >= 4) return 1;
else return 0;
}bool subdiagonal(int x, int y)
nx = x + 1, ny = y - 1;
while(nx <= n && ny >= 0 && mmap[nx][ny] == go)
cout << cnt << endl;
if(cnt >= 4) return 1;
else return 0;
}int main()
int w = 0, b = 0;
for(int i = 0; i < 25; i++) }
if(w == b)//輪到黑棋走
else go = 'o';
for(int i = 0; i < 25; i++)
); }
}} }
if(!v.size()) cout << "tie" << endl;
else
for(int i = 0; i < v.size(); i++) cout << v[i].x << ' ' << v[i].y << endl;
return 0;
}
沒在區間的直接染w和b較大的那個顏色,對於每個區間,由於彼此互不相交,直接比較「染同乙個顏色然後獲得bouns」以及「每個元素染w和b較大那個」然後取最大值累加到答案即可。
#include #define int long long//!!!!!
using namespace std;
int n, m, w[300005], b[300005], t[300005], l[300005], r[300005], c[300005];
bool seg[300005];
long long ans = 0;
signed main()
for(int i = 1; i <= n; i++)
for(int i = 1; i <= m; i++)
if(t[i] == 1)
else
}cout << ans << endl;
}
2020 計蒜之道 預賽 第一場
思路 模擬題 考慮全面即可 第一步 判斷先手和後手,兩棋子相差一定是 1,當相等時,黑子x先走。第二步 暴力判斷每個空白處,填充相應棋子,能不能湊齊五子連珠。橫,豎,撇,捺 說明 黑子先走,棋盤上只會出現黑子 白子的情況 當時只考慮黑子先走,一首涼涼送給自己 includechar map 26 2...
2017 計蒜之道 初賽 第一場
阿里的新遊戲 阿里九遊開放平台近日上架了一款新的益智類遊戲 成三棋。成三棋是我國非常古老的乙個雙人棋類遊戲,其棋盤如下圖所示 如果一條線段上的三個交叉點都被同一玩家的棋子佔據的話,則稱這條線段被該玩家成三。現在,小紅和小明兩人在遊戲平台上下棋,其中小紅的棋子是黑色的。請你幫小紅計算他成三的線段數。樣...
2018 計蒜之道 初賽 第一場
題解 典型的二分 1 pragma warning disable 4996 2 include3 include4 include 5 include6 include7 include8 include9 define ll long long 10using namespace std 111...