求助第103号点
692647
tanghg楼主2023/8/11 10:42

有没有大佬也错在第103号点上了啊,我想问问有没有原因,现在495就差第103号点了,谢谢。

这是我的代码,用的第一篇题解的思路,降噪用dfs写的:

#include <iostream>
#include <algorithm>
#include <cmath>
#include <random>
#include <stack>
#include <cstring>

using namespace std;
typedef long long ll;
const ll MAXH = 65 + 5;
const ll MAXW = 9000 + 5;
const double pi = 3.1415926535;
ll train_time = 270;

double radian(double d) {
    return d / 180.0 * pi;
}

struct image {
    ll x, y;
    string s[MAXH];

    void print() {
        cout << x << " " << y << endl;
        for (int i = 1; i <= x; ++i) {
            cout << s[i] << endl;
        }
        cout << endl;
    }

    image() {
        x = 0, y = 0;
    }

    image(ll _x, ll _y) :
            x(_x),
            y(_y) {
        for (int i = 1; i <= x; ++i) {
            s[i] = " ";
            for (int j = 1; j <= y; ++j) {
                s[i] += '.';
            }
        }
    }
};

vector<image> ex;
image Operator[20];//0123456789)/-(+*
image change_middle(image im) {
    image New(65, 38);
    ll mx = im.x, my = im.y;
    ll px = (65 - mx) / 2, py = (38 - my) / 2;
    for (int i = 1; i <= im.x; ++i) {
        for (int j = 1; j <= im.y; ++j) {
            if (i + px <= 65 && i + px >= 1 && j + py <= 38 && j + py >= 1) {
                New.s[i + px][j + py] = im.s[i][j];
            }
        }
    }
    return New;
}

namespace Init {
    image input;
    bool vis[MAXH][MAXW];

    struct separate_information {
        ll min_x = 1e18, max_x = -1e18, min_y = 1e18, max_y = -1e18;

        void Return() {
            min_x = 1e18, max_x = -1e18, min_y = 1e18, max_y = -1e18;
        }

        void turn(ll x, ll y) {
            min_x = min(min_x, x);
            max_x = max(max_x, x);
            min_y = min(min_y, y);
            max_y = max(max_y, y);
        }

        bool operator<(const separate_information &K) const {
            return min_y < K.min_y;
        }
    } Si[1000];

    ll cc = 1;
    ll val;
    ll dx[] = {0, 0, 1, -1, 1, -1, 1, -1};
    ll dy[] = {1, -1, 0, 0, -1, 1, 1, -1};

    void flood_fill(ll x, ll y, bool del) {
        if (del) {
            input.s[x][y] = '.';
        } else {
            Si[cc].turn(x, y);
            vis[x][y] = true;
            val++;
        }
        for (int i = 0; i < 8; ++i) {
            ll X = x + dx[i], Y = y + dy[i];
            if (X < 1 || X > input.x || Y < 1 || Y > input.y || (vis[X][Y] && !del) || input.s[X][Y] == '.') {
                continue;
            }
            flood_fill(X, Y, del);
        }
    }

    vector<image> clean() {
        cc = 1;
        memset(vis, false, sizeof(vis));
        for (int i = 1; i <= input.x; ++i) {
            for (int j = 1; j <= input.y; ++j) {
                if (input.s[i][j] == '#' && !vis[i][j]) {
                    val = 0;
                    Si[cc].Return();
                    flood_fill(i, j, false);
                    if (val < 50) {
                        flood_fill(i, j, true);
                        continue;
                    }
                    cc++;
                }
            }
        }
        vector<image> SI;
        sort(Si + 1, Si + cc);
        for (int i = 1; i < cc; ++i) {
            separate_information si = Si[i];
            image each(si.max_x - si.min_x + 1, si.max_y - si.min_y + 1);
            ll sz = 1;
            for (int k = si.min_x; k <= si.max_x; ++k) {
                each.s[sz] = " ";
                for (int l = si.min_y; l <= si.max_y; ++l) {
                    each.s[sz] += input.s[k][l];
                }
                ++sz;
            }
            SI.push_back(each);
        }
        return SI;
    }

    void init() {
        Operator[0].x = 39, Operator[0].y = 30, Operator[0].s[1] = " ...........########...........", Operator[0].s[2] = " .........############.........", Operator[0].s[3] = " .......################.......", Operator[0].s[4] = " ......##################......", Operator[0].s[5] = " .....####################.....", Operator[0].s[6] = " ....######################....", Operator[0].s[7] = " ...########################...", Operator[0].s[8] = " ...##########....##########...", Operator[0].s[9] = " ..#########........#########..", Operator[0].s[10] = " ..########..........########..", Operator[0].s[11] = " .#########..........#########.", Operator[0].s[12] = " .########............########.", Operator[0].s[13] = " .########............########.", Operator[0].s[14] = " .########............########.", Operator[0].s[15] = " ########..............########", Operator[0].s[16] = " ########..............########", Operator[0].s[17] = " ########..............########", Operator[0].s[18] = " ########..............########", Operator[0].s[19] = " ########..............########", Operator[0].s[20] = " ########..............########", Operator[0].s[21] = " ########..............########", Operator[0].s[22] = " ########..............########", Operator[0].s[23] = " ########..............########", Operator[0].s[24] = " ########..............########", Operator[0].s[25] = " ########..............########", Operator[0].s[26] = " .########............########.", Operator[0].s[27] = " .########............########.", Operator[0].s[28] = " .########............########.", Operator[0].s[29] = " .#########..........#########.", Operator[0].s[30] = " ..########..........########..", Operator[0].s[31] = " ..#########........#########..", Operator[0].s[32] = " ...##########....##########...", Operator[0].s[33] = " ...########################...", Operator[0].s[34] = " ....######################....", Operator[0].s[35] = " .....####################.....", Operator[0].s[36] = " ......##################......", Operator[0].s[37] = " .......################.......", Operator[0].s[38] = " .........############.........", Operator[0].s[39] = " ...........########...........";
        Operator[1].x = 38, Operator[1].y = 27, Operator[1].s[1] = " .............####..........", Operator[1].s[2] = " ...........#######.........", Operator[1].s[3] = " ........##########.........", Operator[1].s[4] = " .....#############.........", Operator[1].s[5] = " ..################.........", Operator[1].s[6] = " .#################.........", Operator[1].s[7] = " .#################.........", Operator[1].s[8] = " .#################.........", Operator[1].s[9] = " .#################.........", Operator[1].s[10] = " ..######..########.........", Operator[1].s[11] = " ..###.....########.........", Operator[1].s[12] = " ..........########.........", Operator[1].s[13] = " ..........########.........", Operator[1].s[14] = " ..........########.........", Operator[1].s[15] = " ..........########.........", Operator[1].s[16] = " ..........########.........", Operator[1].s[17] = " ..........########.........", Operator[1].s[18] = " ..........########.........", Operator[1].s[19] = " ..........########.........", Operator[1].s[20] = " ..........########.........", Operator[1].s[21] = " ..........########.........", Operator[1].s[22] = " ..........########.........", Operator[1].s[23] = " ..........########.........", Operator[1].s[24] = " ..........########.........", Operator[1].s[25] = " ..........########.........", Operator[1].s[26] = " ..........########.........", Operator[1].s[27] = " ..........########.........", Operator[1].s[28] = " ..........########.........", Operator[1].s[29] = " ..........########.........", Operator[1].s[30] = " ..........########.........", Operator[1].s[31] = " ..........########.........", Operator[1].s[32] = " ..........########.........", Operator[1].s[33] = " .##########################", Operator[1].s[34] = " ###########################", Operator[1].s[35] = " ###########################", Operator[1].s[36] = " ###########################", Operator[1].s[37] = " ###########################", Operator[1].s[38] = " .##########################";
        Operator[2].x = 38, Operator[2].y = 28, Operator[2].s[1] = " .........#########..........", Operator[2].s[2] = " ......##############........", Operator[2].s[3] = " ...###################......", Operator[2].s[4] = " ..#####################.....", Operator[2].s[5] = " .#######################....", Operator[2].s[6] = " .#######################....", Operator[2].s[7] = " .########################...", Operator[2].s[8] = " .#########......#########...", Operator[2].s[9] = " .#######.........#########..", Operator[2].s[10] = " .#######..........########..", Operator[2].s[11] = " .#######..........########..", Operator[2].s[12] = " .#######..........########..", Operator[2].s[13] = " .#######..........########..", Operator[2].s[14] = " ..######..........########..", Operator[2].s[15] = " .................#########..", Operator[2].s[16] = " .................########...", Operator[2].s[17] = " ................#########...", Operator[2].s[18] = " ...............##########...", Operator[2].s[19] = " ..............##########....", Operator[2].s[20] = " .............###########....", Operator[2].s[21] = " ............###########.....", Operator[2].s[22] = " ...........###########......", Operator[2].s[23] = " ..........###########.......", Operator[2].s[24] = " .........###########........", Operator[2].s[25] = " ........###########.........", Operator[2].s[26] = " .......###########..........", Operator[2].s[27] = " ......###########.....#####.", Operator[2].s[28] = " .....###########.....#######", Operator[2].s[29] = " ....###########......#######", Operator[2].s[30] = " ...###########.......#######", Operator[2].s[31] = " ..###########........#######", Operator[2].s[32] = " .###########.........#######", Operator[2].s[33] = " ############################", Operator[2].s[34] = " ############################", Operator[2].s[35] = " ############################", Operator[2].s[36] = " ############################", Operator[2].s[37] = " ############################", Operator[2].s[38] = " .###########################";
        Operator[3].x = 39, Operator[3].y = 28, Operator[3].s[1] = " .........##########.........", Operator[3].s[2] = " .....################.......", Operator[3].s[3] = " ...####################.....", Operator[3].s[4] = " ..######################....", Operator[3].s[5] = " ..#######################...", Operator[3].s[6] = " ..########################..", Operator[3].s[7] = " ..########################..", Operator[3].s[8] = " ..########.......##########.", Operator[3].s[9] = " ..#######.........#########.", Operator[3].s[10] = " ..#######..........########.", Operator[3].s[11] = " ..#######..........########.", Operator[3].s[12] = " ...######..........########.", Operator[3].s[13] = " ...................########.", Operator[3].s[14] = " ...................########.", Operator[3].s[15] = " ..................########..", Operator[3].s[16] = " .................#########..", Operator[3].s[17] = " ..........###############...", Operator[3].s[18] = " .........###############....", Operator[3].s[19] = " .........##############.....", Operator[3].s[20] = " .........###############....", Operator[3].s[21] = " .........################...", Operator[3].s[22] = " ..........################..", Operator[3].s[23] = " .................##########.", Operator[3].s[24] = " ...................########.", Operator[3].s[25] = " ...................#########", Operator[3].s[26] = " ....................########", Operator[3].s[27] = " ....................########", Operator[3].s[28] = " ....................########", Operator[3].s[29] = " ....................########", Operator[3].s[30] = " ...................#########", Operator[3].s[31] = " ..###.............##########", Operator[3].s[32] = " .########........##########.", Operator[3].s[33] = " .##########################.", Operator[3].s[34] = " .#########################..", Operator[3].s[35] = " ##########################..", Operator[3].s[36] = " .########################...", Operator[3].s[37] = " .######################.....", Operator[3].s[38] = " ....#################.......", Operator[3].s[39] = " .......###########..........";
        Operator[4].x = 38, Operator[4].y = 30, Operator[4].s[1] = " .................#####........", Operator[4].s[2] = " ................#######.......", Operator[4].s[3] = " ...............########.......", Operator[4].s[4] = " ..............#########.......", Operator[4].s[5] = " .............##########.......", Operator[4].s[6] = " ............###########.......", Operator[4].s[7] = " ............###########.......", Operator[4].s[8] = " ...........############.......", Operator[4].s[9] = " ..........#############.......", Operator[4].s[10] = " .........##############.......", Operator[4].s[11] = " ........###############.......", Operator[4].s[12] = " .......################.......", Operator[4].s[13] = " .......########.#######.......", Operator[4].s[14] = " ......########..#######.......", Operator[4].s[15] = " .....########...#######.......", Operator[4].s[16] = " ....########....#######.......", Operator[4].s[17] = " ...#########....#######.......", Operator[4].s[18] = " ...########.....#######.......", Operator[4].s[19] = " ..########......#######.......", Operator[4].s[20] = " .########.......#######.......", Operator[4].s[21] = " ##############################", Operator[4].s[22] = " ##############################", Operator[4].s[23] = " ##############################", Operator[4].s[24] = " ##############################", Operator[4].s[25] = " ##############################", Operator[4].s[26] = " ##############################", Operator[4].s[27] = " ...............########.......", Operator[4].s[28] = " ...............########.......", Operator[4].s[29] = " ...............########.......", Operator[4].s[30] = " ...............########.......", Operator[4].s[31] = " ...............########.......", Operator[4].s[32] = " ...............########.......", Operator[4].s[33] = " .........####################.", Operator[4].s[34] = " ........#####################.", Operator[4].s[35] = " ........#####################.", Operator[4].s[36] = " ........#####################.", Operator[4].s[37] = " ........#####################.", Operator[4].s[38] = " .........####################.";
        Operator[5].x = 38, Operator[5].y = 28, Operator[5].s[1] = " ...######################...", Operator[5].s[2] = " ...#######################..", Operator[5].s[3] = " ...#######################..", Operator[5].s[4] = " ...#######################..", Operator[5].s[5] = " ...#######################..", Operator[5].s[6] = " ...######################...", Operator[5].s[7] = " ...#######..................", Operator[5].s[8] = " ...#######..................", Operator[5].s[9] = " ...#######..................", Operator[5].s[10] = " ...#######..................", Operator[5].s[11] = " ...#######..................", Operator[5].s[12] = " ...#######..................", Operator[5].s[13] = " ..########..########........", Operator[5].s[14] = " ..####################......", Operator[5].s[15] = " ..######################....", Operator[5].s[16] = " ..#######################...", Operator[5].s[17] = " ..########################..", Operator[5].s[18] = " ..########################..", Operator[5].s[19] = " ..#########################.", Operator[5].s[20] = " ..########.......##########.", Operator[5].s[21] = " .....##...........#########.", Operator[5].s[22] = " ...................#########", Operator[5].s[23] = " ....................########", Operator[5].s[24] = " ....................########", Operator[5].s[25] = " ....................########", Operator[5].s[26] = " ....................########", Operator[5].s[27] = " ....................########", Operator[5].s[28] = " ....................########", Operator[5].s[29] = " ...#...............#########", Operator[5].s[30] = " ..####............#########.", Operator[5].s[31] = " .########.......###########.", Operator[5].s[32] = " .##########################.", Operator[5].s[33] = " .#########################..", Operator[5].s[34] = " #########################...", Operator[5].s[35] = " .#######################....", Operator[5].s[36] = " ..#####################.....", Operator[5].s[37] = " ....#################.......", Operator[5].s[38] = " ........##########..........";
        Operator[6].x = 39, Operator[6].y = 29, Operator[6].s[1] = " ....................######...", Operator[6].s[2] = " ...............###########...", Operator[6].s[3] = " ............###############..", Operator[6].s[4] = " ..........#################..", Operator[6].s[5] = " ........###################..", Operator[6].s[6] = " .......####################..", Operator[6].s[7] = " ......####################...", Operator[6].s[8] = " .....################........", Operator[6].s[9] = " ....############.............", Operator[6].s[10] = " ...###########...............", Operator[6].s[11] = " ...#########.................", Operator[6].s[12] = " ..#########..................", Operator[6].s[13] = " ..########...................", Operator[6].s[14] = " .########....................", Operator[6].s[15] = " .########....................", Operator[6].s[16] = " .#######....########.........", Operator[6].s[17] = " .#######..#############......", Operator[6].s[18] = " #########################....", Operator[6].s[19] = " ##########################...", Operator[6].s[20] = " ###########################..", Operator[6].s[21] = " ###########################..", Operator[6].s[22] = " ############......##########.", Operator[6].s[23] = " ##########.........#########.", Operator[6].s[24] = " #########...........#########", Operator[6].s[25] = " ########.............########", Operator[6].s[26] = " ########.............########", Operator[6].s[27] = " ########.............########", Operator[6].s[28] = " .#######.............########", Operator[6].s[29] = " .#######.............########", Operator[6].s[30] = " .########...........#########", Operator[6].s[31] = " .#########.........#########.", Operator[6].s[32] = " ..##########.....###########.", Operator[6].s[33] = " ...#########################.", Operator[6].s[34] = " ...########################..", Operator[6].s[35] = " ....######################...", Operator[6].s[36] = " .....####################....", Operator[6].s[37] = " ......##################.....", Operator[6].s[38] = " ........##############.......", Operator[6].s[39] = " ...........########..........";
        Operator[7].x = 38, Operator[7].y = 28, Operator[7].s[1] = " ###########################.", Operator[7].s[2] = " ############################", Operator[7].s[3] = " ############################", Operator[7].s[4] = " ############################", Operator[7].s[5] = " ############################", Operator[7].s[6] = " ###########################.", Operator[7].s[7] = " #######...........#########.", Operator[7].s[8] = " #######...........#########.", Operator[7].s[9] = " #######..........#########..", Operator[7].s[10] = " #######..........#########..", Operator[7].s[11] = " #######..........########...", Operator[7].s[12] = " #######.........#########...", Operator[7].s[13] = " #######.........########....", Operator[7].s[14] = " #######........#########....", Operator[7].s[15] = " .#####.........#########....", Operator[7].s[16] = " ...............########.....", Operator[7].s[17] = " ..............#########.....", Operator[7].s[18] = " ..............########......", Operator[7].s[19] = " .............#########......", Operator[7].s[20] = " .............########.......", Operator[7].s[21] = " ............#########.......", Operator[7].s[22] = " ............#########.......", Operator[7].s[23] = " ............########........", Operator[7].s[24] = " ...........#########........", Operator[7].s[25] = " ...........########.........", Operator[7].s[26] = " ..........#########.........", Operator[7].s[27] = " ..........########..........", Operator[7].s[28] = " ..........########..........", Operator[7].s[29] = " .........########...........", Operator[7].s[30] = " .........########...........", Operator[7].s[31] = " ........#########...........", Operator[7].s[32] = " ........########............", Operator[7].s[33] = " ........########............", Operator[7].s[34] = " .......########.............", Operator[7].s[35] = " .......########.............", Operator[7].s[36] = " .......#######..............", Operator[7].s[37] = " .......#######..............", Operator[7].s[38] = " .........#####..............";
        Operator[8].x = 39, Operator[8].y = 28, Operator[8].s[1] = " ..........#########.........", Operator[8].s[2] = " ........#############.......", Operator[8].s[3] = " ......#################.....", Operator[8].s[4] = " .....###################....", Operator[8].s[5] = " ....#####################...", Operator[8].s[6] = " ...#######################..", Operator[8].s[7] = " ...#######################..", Operator[8].s[8] = " ...#########.....#########..", Operator[8].s[9] = " ..#########.......#########.", Operator[8].s[10] = " ..########.........########.", Operator[8].s[11] = " ..########.........########.", Operator[8].s[12] = " ..########.........########.", Operator[8].s[13] = " ..########.........########.", Operator[8].s[14] = " ..########.........########.", Operator[8].s[15] = " ...########.......########..", Operator[8].s[16] = " ...#########.....#########..", Operator[8].s[17] = " ....#####################...", Operator[8].s[18] = " .....###################....", Operator[8].s[19] = " ......#################.....", Operator[8].s[20] = " ......#################.....", Operator[8].s[21] = " ....#####################...", Operator[8].s[22] = " ...#######################..", Operator[8].s[23] = " ..#########......##########.", Operator[8].s[24] = " .########..........########.", Operator[8].s[25] = " .########..........#########", Operator[8].s[26] = " ########............########", Operator[8].s[27] = " ########............########", Operator[8].s[28] = " ########............########", Operator[8].s[29] = " ########............########", Operator[8].s[30] = " #########..........#########", Operator[8].s[31] = " #########..........#########", Operator[8].s[32] = " .##########......##########.", Operator[8].s[33] = " .##########################.", Operator[8].s[34] = " ..########################..", Operator[8].s[35] = " ..########################..", Operator[8].s[36] = " ...######################...", Operator[8].s[37] = " ....####################....", Operator[8].s[38] = " ......################......", Operator[8].s[39] = " .........##########.........";
        Operator[9].x = 39, Operator[9].y = 28, Operator[9].s[1] = " .........#########..........", Operator[9].s[2] = " .......#############........", Operator[9].s[3] = " .....#################......", Operator[9].s[4] = " ....###################.....", Operator[9].s[5] = " ...#####################....", Operator[9].s[6] = " ..#######################...", Operator[9].s[7] = " .########################...", Operator[9].s[8] = " .##########......#########..", Operator[9].s[9] = " .#########........#########.", Operator[9].s[10] = " #########..........########.", Operator[9].s[11] = " ########............#######.", Operator[9].s[12] = " ########............#######.", Operator[9].s[13] = " ########............########", Operator[9].s[14] = " ########............########", Operator[9].s[15] = " ########............########", Operator[9].s[16] = " #########..........#########", Operator[9].s[17] = " .########.........##########", Operator[9].s[18] = " .##########......###########", Operator[9].s[19] = " ..##########################", Operator[9].s[20] = " ..##########################", Operator[9].s[21] = " ...#########################", Operator[9].s[22] = " ....########################", Operator[9].s[23] = " ......############..########", Operator[9].s[24] = " ........########....#######.", Operator[9].s[25] = " ....................#######.", Operator[9].s[26] = " ...................########.", Operator[9].s[27] = " ...................########.", Operator[9].s[28] = " ..................########..", Operator[9].s[29] = " .................#########..", Operator[9].s[30] = " ...............##########...", Operator[9].s[31] = " .............############...", Operator[9].s[32] = " .........###############....", Operator[9].s[33] = " ....###################.....", Operator[9].s[34] = " ...###################......", Operator[9].s[35] = " ...##################.......", Operator[9].s[36] = " ...################.........", Operator[9].s[37] = " ...##############...........", Operator[9].s[38] = " ...############.............", Operator[9].s[39] = " ....######..................";
        Operator[10].x = 54, Operator[10].y = 21, Operator[10].s[1] = " ..####...............", Operator[10].s[2] = " .######..............", Operator[10].s[3] = " #########............", Operator[10].s[4] = " ##########...........", Operator[10].s[5] = " ###########..........", Operator[10].s[6] = " ############.........", Operator[10].s[7] = " .############........", Operator[10].s[8] = " ...###########.......", Operator[10].s[9] = " ....###########......", Operator[10].s[10] = " .....##########......", Operator[10].s[11] = " ......##########.....", Operator[10].s[12] = " .......##########....", Operator[10].s[13] = " ........#########....", Operator[10].s[14] = " .........#########...", Operator[10].s[15] = " ..........########...", Operator[10].s[16] = " ..........#########..", Operator[10].s[17] = " ...........########..", Operator[10].s[18] = " ...........#########.", Operator[10].s[19] = " ............########.", Operator[10].s[20] = " ............########.", Operator[10].s[21] = " ............########.", Operator[10].s[22] = " ............#########", Operator[10].s[23] = " .............########", Operator[10].s[24] = " .............########", Operator[10].s[25] = " .............########", Operator[10].s[26] = " .............########", Operator[10].s[27] = " .............########", Operator[10].s[28] = " .............########", Operator[10].s[29] = " .............########", Operator[10].s[30] = " .............########", Operator[10].s[31] = " .............########", Operator[10].s[32] = " .............########", Operator[10].s[33] = " ............########.", Operator[10].s[34] = " ............########.", Operator[10].s[35] = " ............########.", Operator[10].s[36] = " ...........#########.", Operator[10].s[37] = " ...........########..", Operator[10].s[38] = " ..........#########..", Operator[10].s[39] = " ..........#########..", Operator[10].s[40] = " .........#########...", Operator[10].s[41] = " ........##########...", Operator[10].s[42] = " .......##########....", Operator[10].s[43] = " .......#########.....", Operator[10].s[44] = " .....###########.....", Operator[10].s[45] = " ....###########......", Operator[10].s[46] = " ...###########.......", Operator[10].s[47] = " ..###########........", Operator[10].s[48] = " ############.........", Operator[10].s[49] = " ###########..........", Operator[10].s[50] = " ##########...........", Operator[10].s[51] = " #########............", Operator[10].s[52] = " .#######.............", Operator[10].s[53] = " ..####...............", Operator[10].s[54] = " ...#.................";
        Operator[11].x = 51, Operator[11].y = 28, Operator[11].s[1] = " ......................####..", Operator[11].s[2] = " ......................######", Operator[11].s[3] = " .....................#######", Operator[11].s[4] = " .....................#######", Operator[11].s[5] = " ....................########", Operator[11].s[6] = " ....................#######.", Operator[11].s[7] = " ...................########.", Operator[11].s[8] = " ...................#######..", Operator[11].s[9] = " ..................########..", Operator[11].s[10] = " ..................#######...", Operator[11].s[11] = " .................########...", Operator[11].s[12] = " .................#######....", Operator[11].s[13] = " ................########....", Operator[11].s[14] = " ................########....", Operator[11].s[15] = " ................#######.....", Operator[11].s[16] = " ...............########.....", Operator[11].s[17] = " ...............#######......", Operator[11].s[18] = " ..............########......", Operator[11].s[19] = " ..............#######.......", Operator[11].s[20] = " .............########.......", Operator[11].s[21] = " .............#######........", Operator[11].s[22] = " ............########........", Operator[11].s[23] = " ............#######.........", Operator[11].s[24] = " ...........########.........", Operator[11].s[25] = " ...........#######..........", Operator[11].s[26] = " ..........########..........", Operator[11].s[27] = " ..........#######...........", Operator[11].s[28] = " ..........#######...........", Operator[11].s[29] = " .........########...........", Operator[11].s[30] = " .........#######............", Operator[11].s[31] = " ........########............", Operator[11].s[32] = " ........#######.............", Operator[11].s[33] = " .......########.............", Operator[11].s[34] = " .......#######..............", Operator[11].s[35] = " ......########..............", Operator[11].s[36] = " ......#######...............", Operator[11].s[37] = " .....########...............", Operator[11].s[38] = " .....#######................", Operator[11].s[39] = " ....########................", Operator[11].s[40] = " ....#######.................", Operator[11].s[41] = " ...########.................", Operator[11].s[42] = " ...########.................", Operator[11].s[43] = " ...#######..................", Operator[11].s[44] = " ..########..................", Operator[11].s[45] = " ..#######...................", Operator[11].s[46] = " .########...................", Operator[11].s[47] = " .#######....................", Operator[11].s[48] = " ########....................", Operator[11].s[49] = " #######.....................", Operator[11].s[50] = " .######.....................", Operator[11].s[51] = " ..#####.....................";
        Operator[12].x = 7, Operator[12].y = 28, Operator[12].s[1] = " .##########################.", Operator[12].s[2] = " ############################", Operator[12].s[3] = " ############################", Operator[12].s[4] = " ############################", Operator[12].s[5] = " ############################", Operator[12].s[6] = " ############################", Operator[12].s[7] = " .###########################";
        Operator[13].x = 54, Operator[13].y = 21, Operator[13].s[1] = " ...............####..", Operator[13].s[2] = " ..............######.", Operator[13].s[3] = " ............########.", Operator[13].s[4] = " ...........##########", Operator[13].s[5] = " ..........###########", Operator[13].s[6] = " .........############", Operator[13].s[7] = " ........############.", Operator[13].s[8] = " .......###########...", Operator[13].s[9] = " ......###########....", Operator[13].s[10] = " .....###########.....", Operator[13].s[11] = " .....##########......", Operator[13].s[12] = " ....##########.......", Operator[13].s[13] = " ....#########........", Operator[13].s[14] = " ...#########.........", Operator[13].s[15] = " ...########..........", Operator[13].s[16] = " ..#########..........", Operator[13].s[17] = " ..########...........", Operator[13].s[18] = " .#########...........", Operator[13].s[19] = " .########............", Operator[13].s[20] = " .########............", Operator[13].s[21] = " .########............", Operator[13].s[22] = " #########............", Operator[13].s[23] = " ########.............", Operator[13].s[24] = " ########.............", Operator[13].s[25] = " ########.............", Operator[13].s[26] = " ########.............", Operator[13].s[27] = " ########.............", Operator[13].s[28] = " ########.............", Operator[13].s[29] = " ########.............", Operator[13].s[30] = " ########.............", Operator[13].s[31] = " ########.............", Operator[13].s[32] = " ########.............", Operator[13].s[33] = " .########............", Operator[13].s[34] = " .########............", Operator[13].s[35] = " .########............", Operator[13].s[36] = " .#########...........", Operator[13].s[37] = " ..########...........", Operator[13].s[38] = " ..#########..........", Operator[13].s[39] = " ..#########..........", Operator[13].s[40] = " ...#########.........", Operator[13].s[41] = " ...##########........", Operator[13].s[42] = " ....#########........", Operator[13].s[43] = " .....#########.......", Operator[13].s[44] = " .....##########......", Operator[13].s[45] = " ......###########....", Operator[13].s[46] = " .......###########...", Operator[13].s[47] = " ........###########..", Operator[13].s[48] = " .........############", Operator[13].s[49] = " ..........###########", Operator[13].s[50] = " ...........##########", Operator[13].s[51] = " ............#########", Operator[13].s[52] = " .............#######.", Operator[13].s[53] = " ...............####..", Operator[13].s[54] = " .................#...";
        Operator[14].x = 28, Operator[14].y = 27, Operator[14].s[1] = " ...........#####...........", Operator[14].s[2] = " ..........#######..........", Operator[14].s[3] = " ..........#######..........", Operator[14].s[4] = " ..........#######..........", Operator[14].s[5] = " ..........#######..........", Operator[14].s[6] = " ..........#######..........", Operator[14].s[7] = " ..........#######..........", Operator[14].s[8] = " ..........#######..........", Operator[14].s[9] = " ..........#######..........", Operator[14].s[10] = " ..........#######..........", Operator[14].s[11] = " ###########################", Operator[14].s[12] = " ###########################", Operator[14].s[13] = " ###########################", Operator[14].s[14] = " ###########################", Operator[14].s[15] = " ###########################", Operator[14].s[16] = " ###########################", Operator[14].s[17] = " ###########################", Operator[14].s[18] = " ..........#######..........", Operator[14].s[19] = " ..........#######..........", Operator[14].s[20] = " ..........#######..........", Operator[14].s[21] = " ..........#######..........", Operator[14].s[22] = " ..........#######..........", Operator[14].s[23] = " ..........#######..........", Operator[14].s[24] = " ..........#######..........", Operator[14].s[25] = " ..........#######..........", Operator[14].s[26] = " ..........#######..........", Operator[14].s[27] = " ..........#######..........", Operator[14].s[28] = " ...........#####...........";
        Operator[15].x = 26, Operator[15].y = 26, Operator[15].s[1] = " ...........####...........", Operator[15].s[2] = " ..........######..........", Operator[15].s[3] = " ..........#######.........", Operator[15].s[4] = " .........########.........", Operator[15].s[5] = " .........########.........", Operator[15].s[6] = " ..........#######.........", Operator[15].s[7] = " ..........######..........", Operator[15].s[8] = " .#####....######.....####.", Operator[15].s[9] = " .######...######...#######", Operator[15].s[10] = " #########..#####.#########", Operator[15].s[11] = " ###############.##########", Operator[15].s[12] = " ##########################", Operator[15].s[13] = " ##########################", Operator[15].s[14] = " .########################.", Operator[15].s[15] = " ......##############......", Operator[15].s[16] = " .........########.........", Operator[15].s[17] = " ........###########.......", Operator[15].s[18] = " .......#############......", Operator[15].s[19] = " .....########.#######.....", Operator[15].s[20] = " ....########..########....", Operator[15].s[21] = " ....########..#########...", Operator[15].s[22] = " ...########....########...", Operator[15].s[23] = " ...########....########...", Operator[15].s[24] = " ....#######.....#######...", Operator[15].s[25] = " .....#####......######....", Operator[15].s[26] = " ......###.........##......";
        for (int i = 0; i < 16; ++i) {
            Operator[i] = change_middle(Operator[i]);
        }
        ll t;
        scanf("%lld", &t);
        if(t>=90){
            train_time=140;
        }
        scanf("%lld%lld", &input.y, &input.x);
        for (int i = 1; i <= 65; ++i) {
            cin >> input.s[i];
            input.s[i] = " " + input.s[i];
        }
    }
}
using Init::clean;


image change(image query, double M, double M_h, double M_w, double R, double S_x, double S_y) {
    image New(65, 38);
    double Cos = cos(radian(R)), Sin = sin(radian(R));
    for (int i = 1; i <= query.x; ++i) {
        for (int j = 1; j <= query.y; ++j) {
            if (query.s[i][j] == '#') {
                double x = i + 0.5 - 32.5, y = j + 0.5 - 19;
                x *= M * M_w;
                y *= M * M_h;
                double spin_x = x * Cos - y * Sin;
                double spin_y = x * Sin + y * Cos;
                x = spin_x + S_y * spin_y;
                y = spin_y + S_x * spin_x;
                x = floor(x + 32);
                y = floor(y + 18.5);
                ll X = x, Y = y;
                if (X >= 1 && X <= 65 && Y >= 1 && Y <= 38) {
                    New.s[X][Y] = '#';
                }
            }
        }
    }
    Init::input = change_middle(New);
    vector<image> EX = clean();
    return change_middle(EX[0]);
}

double same(image query, image simple) {
    ll val = 0;
    for (int i = 1; i <= 65; ++i) {
        for (int j = 1; j <= 38; ++j) {
            val += (query.s[i][j] == simple.s[i][j]);
        }
    }
    return val * 1.0 / 2470;
}


image random_image[5000 + 5][20];

void Train() {
    random_device rd;
    mt19937 random_seed(rd());
    uniform_real_distribution<> rm(0.9, 1), rr(-15, 15), rs(-0.1, 0.1);
    for (int i = 0; i < train_time; ++i) {
        for (int j = 0; j < 16; ++j) {
            double M = rm(random_seed);
            double M_h = rm(random_seed), M_w = rm(random_seed);
            double R = rr(random_seed);
            double S_x = rs(random_seed), S_y = rs(random_seed);
            random_image[i][j] = change(Operator[j], M, M_h, M_w, R, S_x, S_y);
        }
    }
}

char to(image im, char c) {
    char ac[] = "0123456789)/-(+*";
    im = change_middle(im);
    double fit_rate = 0;
    ll id;
    for (int i = 0; i < train_time; ++i) {
        for (int j = 0; j < 16; ++j) {
            if (c == '+' || c == '-' || c == '*' || c == '/' || c == '(') {
                if (ac[j] == '+' || ac[j] == '-' || ac[j] == '*' || ac[j] == '/' || ac[j] == ')') {
                    continue;
                }
            }
            if (isdigit(c) && isdigit(ac[j])) {
                continue;
            }
            if (c == ')' && ac[j] == '(') {
                continue;
            }
            if (c == '(' && ac[j] == ')') {
                continue;
            }
            double new_fit_rate = same(random_image[i][j], im);
            if (new_fit_rate > fit_rate) {
                fit_rate = new_fit_rate;
                id = j;
            }
        }
    }
    return ac[id];
}

namespace Calc {
    stack<ll> num;
    stack<char> op;

    ll g(char a) {
        if (a == '+' || a == '-') {
            return 1;
        } else if (a == '*' || a == '/') {
            return 2;
        }
        return 0;
    }

    void Do() {
        ll a, b, c;
        char o = op.top();
        op.pop();
        a = num.top();
        num.pop();
        b = num.top();
        num.pop();
        if (o == '+') {
            c = a + b;
        } else if (o == '-') {
            c = b - a;
        } else if (o == '*') {
            c = a * b;
        } else {
            c = b / a;
        }
        num.push(c);
    }

    ll Ans(string expression) {
        for (int i = 0; i < expression.size(); ++i) {
            char c = expression[i];
            if (isdigit(c)) {
                num.push(c - '0');
            } else if (c == '(') {
                op.push(c);
            } else if (c == ')') {
                while (op.top() != '(') {
                    Do();
                }
                op.pop();
            } else {
                while (!op.empty() && g(op.top()) >= g(c)) {
                    Do();
                }
                op.push(c);
            }
        }
        while (!op.empty()) {
            Do();
        }
        return num.top();
    }
}
using Calc::Ans;

int main() {

    //freopen("test.in", "r", stdin);
    //freopen("test.txt", "w", stdout);
//    double dur;
//    clock_t start,end;
//    start = clock();
    Init::init();
    ex = clean();
    string expression = "";
    Train();
    char c = ' ';
    for (auto i: ex) {
        //i.print();
        c = to(i, c);
        expression += c;
    }
    //cout << expression << endl;
    printf("%lld\n", Ans(expression));
//    end = clock();
//    dur = (double)(end - start);
//    printf("Use Time:%f\n",(dur/CLOCKS_PER_SEC));
    return 0;
}
2023/8/11 10:42
加载中...