Codeforces - 52B. Right Triangles - 數學

Right Triangles

題目鏈接

分類combinatorics

1.題意概述

  • 給你一個n×m 的字符串矩陣(由.*組成),問你有多少個與矩陣邊平行的直角三角形?

2.解題思路

  • 對於|__|形的三角形,我們只需要在底邊_上方看有多少個*即可,所以公式就是(x[i]1)×(y[i]1) ,對每一次累加求和即爲答案。

3.AC代碼

char g[N][N];
int a[N], b[N];
int main() {
    int n, m;
    scanf("%d%d", &n, &m);
    rep(i, 0, n) scanf("%s", g[i]);
    rep(i, 0, n) {
        rep(j, 0, m) {
            if (g[i][j] == '*') {
                a[i]++;
                b[j]++;
            }
        }
    }
    ll ans = 0;
    rep(i, 0, n) {
        rep(j, 0, m) {
            if (g[i][j] == '*')
                ans += (a[i] - 1) * (b[j] - 1);
        }
    }
    printf("%I64d\n", ans);
    return 0;
}
發佈了350 篇原創文章 · 獲贊 47 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章