提供站外题目、求调
查看原帖
提供站外题目、求调
807120
ybc2025_11_LCH楼主2023/2/1 08:28

https://www.luogu.com.cn/problem/T311446

#include <bits/stdc++.h>

using namespace std;

vector <pair <int, int> > L;
vector <pair <int, int> > C;
int S;
pair <int, int> tmpBu;
constexpr int M = 1005;
char cityMap[M][M];
int lNum, cNum, sNum;
int n, m, tmp = 2;
bool flag = true;

inline bool cmp(pair <int, int> fst, pair <int, int> snd) {
    return fst.first <= snd.first;
}

int main(int argc, char* argv[]) {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> m >> n;
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j)
            cin >> cityMap[i][j];
    }
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j) {
            tmp = 2, flag = false;
            if (cityMap[i][j] and cityMap[i][j + 1 >= n ? n - 1 : j + 1]) {
                while (cityMap[i][++j])
                    ++tmp;
                for (int k = 0; k < L.size(); ++k) {
                    if (L[k].first == tmp)
                        L[k].second++, flag = true;
                }
                if (!flag) {
                    tmpBu.first = tmp;
                    tmpBu.second = 1;
                    L.push_back(tmpBu);
                }
            }
            else if (cityMap[i][j - 1] == 1 &&
                     cityMap[i + 1 >= m ? m - 1 : i + 1][j - 1] == 0 &&
                     cityMap[abs(i - 1)][j - 1] == 0) ++S;
        }
    }
    for (int i = 0; i < m; ++i) {
        for (int j = 0; j < n; ++j) {
            tmp = 2, flag = false;
            if (cityMap[i + 1][j] && cityMap[i][j]) {
                while (cityMap[++i][j])
                    ++tmp;
                for (int k = 0; k < C.size(); ++k) {
                    if (C[k].first == tmp)
                        C[k].second++, flag = true;
                }
                if (!flag) {
                    tmpBu.first = tmp;
                    tmpBu.second = 1;
                    C.push_back(tmpBu);
                }
            }
        }
    }
    cout << "S " << S << '\n';
    sort(L.begin(), L.end(), cmp);
    sort(C.begin(), C.end(), cmp);
    for (int i = 0; i < L.size(); ++i)
        cout << "L " << L[i].first << ' ' << L[i].second << '\n';
    for (int i = 0; i < C.size(); ++i)
        cout << "C " << C[i].first << ' ' << C[i].second << '\n';
    return 0;
}
2023/2/1 08:28
加载中...