AT_birthday0410_x.この問題はほんとうにひどい問題であるため,できれば先に他の問題のほうをお楽しみいただければと思っておりまして,ですので他の問題を通し終えて暇になり,かつその暇を
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给出一个仅包含一位整数、括号以及四则运算(加、减、乘、除)的表达式,请输出其计算结果。
输入格式
t
W H
B1
B2
…
BH
t 是一个非负整数,表示从 0 开始依次编号的测试用例的序号。
W 和 H 都是正整数,分别表示输入图像的宽度和高度。
对于 1≤i≤H,Bi,j 是一个仅由 Bi,j 组成的 W 个字符的字符串,其第 j 个字符(1≤j≤W)表示图像中从上往下数第 i 行、从左往右数第 j 列的像素。当对应的字符是 . 时,该像素为白色;当对应的字符是 # 时,该像素为黑色。
输出格式
A
A 表示输入图像中黑色像素组成的表达式的计算结果。
说明/提示
「约束条件」
-
对于所有输入数据,均满足 H=65 且 1≤W≤9,000。
-
所有的输入数据均按以下步骤生成。
- 首先,以每行为一个单位,生成仅包含四则运算的 L 个字符的算术表达式。计算结果也要求能存储在计算过程中的 32 位带符号整数类型中。为了准备这些(算术表达式),字符不限于随机生成,而是通过数次除法运算得到整数,或者将商的小数部分舍去得到值(例如,
-7/3为-2)。此外,不包含像+5或-5这样的正负号直接修饰数字的表达方式。 - 然后,将包含这 L 个字符的表达式按如下方式生成图像。
- 使用 Courier Prime 字体,字体大小 64,用文字绘制包含 2 值(黑白)的图像。
以此方式生成的图像,以及将其转换为文本的页面底部的提示均可在「提示」一栏下载。 - 生成倍率 M (M≤1),将图像整体按 M 倍(实际是缩小)进行缩放。
- 生成横向倍率 Mw (Mw≤1) 和纵向倍率 Mh (Mh≤1),将图像整体横向放大 Mw 倍,纵向放大 Mh 倍。
- 生成角度 R,将图像整体旋转 R 度。
- 生成两个参数 Sx,Sy,并基于这些参数进行变换。具体来说,是将图像中的像素 (x,y) 移动到 (x+Sxy,Syx+y)。
- 使用 Courier Prime 字体,字体大小 64,用文字绘制包含 2 值(黑白)的图像。
- 将各字符对应的图像连接起来,形成一个图像。此时,
- 横向位置,为了使字符之间不至于紧挨着,字符与字符之间留出 10 像素的空白。
- 纵向位置,为了让字符稍微错开一些,将图像整体进行缩放・旋转・平移等操作之前的原始字体大小随机决定。
- 最后,根据概率 P 将图像中的各个像素的黑白进行反转(添加噪声)。
- 首先,以每行为一个单位,生成仅包含四则运算的 L 个字符的算术表达式。计算结果也要求能存储在计算过程中的 32 位带符号整数类型中。为了准备这些(算术表达式),字符不限于随机生成,而是通过数次除法运算得到整数,或者将商的小数部分舍去得到值(例如,
此处,长度 L、噪声 P 在输入数据中是独立的值,并且倍率 M,Mw,Mh、角度 R、参数 Sx,Sy 在同一测试用例中对于每个字符的生成也是独立的,敬请注意。
「数据范围」
此问题的输入数据共有 140 组,从 0 开始编号。这些数据是根据输入部分中 t 的值来对应的。另外,下文中 "x∈[a,b)" 这样的记法,意为「x 是 a 以上 b 以下的实数中的任意一个值来生成的」。
-
对于满足 0≤t<30 的输入数据的生成过程为:
- L=3
- M∈[0.9,1]
- Mh∈[0.9,1],Mw∈[0.9,1]
- R∈[−2,2]
- Sx=0,Sy=0
- P=0
-
对于满足 30≤t<90 的输入数据的生成过程为:
- L=50
- M∈[0.9,1]
- Mh∈[0.9,1],Mw∈[0.9,1]
- R∈[−10,10]
- Sx∈[−0.1,0.1],Sy∈[−0.1,0.1]
- P=0.05
-
对于满足 90≤t<140 的输入数据的生成过程为:
- L=200
- M∈[0.9,1]
- Mh∈[0.9,1],Mw∈[0.9,1]
- R∈[−15,15]
- Sx∈[−0.1,0.1],Sy∈[−0.1,0.1]
- P=0.05
得分按如下方式决定:
- 对于满足 0≤t<30 的输入数据,每正确解答 1 组数据得 2 分。
- 对于满足 30≤t<55 的输入数据,每正确解答 1 组数据得 2 分。
- 对于满足 55≤t<90 的输入数据,每正确解答 1 组数据得 4 分。
- 对于满足 90≤t<140 的输入数据,每正确解答 1 组数据得 5 分。
另外,关于满足 30≤t<55 的输入数据,其对应的输入文件以及可视化后的 PNG 格式图像均可从此链接下载:在这里。
「输入输出样例」
例如,考虑以下图像作为输入:

该图像对应的输入数据(由于原数据尺寸太大不便观察,所以图像中的数据已经过缩放处理以便查看。你可以使用等宽字体查看文本输入数据并缩小字体大小,会更容易理解)。此数据中的测试用例编号 999 也是假的。
因此,我们只需计算 3×3−4 并输出:
5
「提示」
-
字体数据:
包含0123456789()+-*/这 16 个字符的图像和文本格式的字体数据已打包成一个 zip 文件,可以下载。解压此 zip 文件后,会得到txt/和png/两个目录,其中分别包含文本格式和图像(PNG 格式)的字体数据。
关于文本格式的字体数据的格式,省略了本题输入格式中的测试用例编号 t 的那一行,只给出了 W 和 H。 -
嵌入辅助文本:
上述字体数据在嵌入程序中时可以使用的辅助文本可以从链接下载。进行适当的处理后嵌入使用即可。
注意:此嵌入用数据大约为 44,000 字节。在 AtCoder 上可提交的源代码为 UTF-8 编码下 60,000 字符以内,因此写程序时请务必注意代码长度。(译者注:在洛谷上可提交的源代码为 50KB 以内) -
关于我们的努力:
对于没有特判数据输出的程序,我们存在一种能够通过 140 组测试数据,和相同方法随机生成的约 200 个数据的 std(我们也尽力了)。
输入解题思路,AI测评打分。不知道怎么写?