有没有大佬也错在第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;
}