P15429 [IOI 2013] Art Class 艺术分类

题目背景

- 原题时间限制:$5$ 秒; - 原题内存限制:$64$ MiB。 **仅支持 C++ 交互。** 你不需要引入额外的头文件,但请在代码开头加入如下声明: ```cpp int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]); ```

题目描述

你很快就要有一场艺术史的考试了。由于平时在信息学上花的时间太多了,所以你现在需要写一个程序帮自己通过艺术史的考试。 考试内容是对若干幅图画作品的风格进行识别。作品共有四种风格,分别编码为 $1$,$2$,$3$ 和 $4$。每幅作品属于其中的一种风格。 风格 $1$:新造型主义现代画。例如: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/topkri2n.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/5kv8ollo.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/t8dwddap.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/cus590cw.png?x-oss-process=image/resize,m_lfit,h_120) ::: 风格 $2$:印象派风景画。例如: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/9e9xk6kg.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/2jgonppk.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/a480rxos.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/f16yr8n3.png?x-oss-process=image/resize,m_lfit,h_120) ::: 风格 $3$:表现派细节组合画。例如: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/jydtubq4.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/i14a173l.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/zow44529.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/wonizjbt.png?x-oss-process=image/resize,m_lfit,h_120) ::: 风格 $4$:色块组合画。例如: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/5q03wske.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/emq958ak.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/nphi39yx.png?x-oss-process=image/resize,m_lfit,h_120) ![](https://cdn.luogu.com.cn/upload/image_hosting/ccdpaq6t.png?x-oss-process=image/resize,m_lfit,h_120) ::: 你的任务是:对给定的一幅画,确定她所属的风格。 IOI 的裁判们对于每种风格都搜集了很多图像。他们从每种风格的图像中各选了 $9$ 幅图像,并把这些选中的图像放在了你的电脑上。你可以用这些图像测试你的程序。未被选中的图像将在评测中使用。 图像以 $H×W$ 的像素网格的形式给出。行是从上到下编码为 $0,\dots,H - 1$,列是从左到右编码为 $0,\dots,W - 1$。 每个像素点用 $R,G,B$ 三个值表示该点的红、绿、蓝的饱和度。分别存在三个二维数组里。$R,G,B$ 的取值范围都是 $0$(没有该种颜色)到 $255$(该种颜色取得最大值)。 ### 实现 你需要提交一个文件,文件中实现了一个名为 `style()` 的函数,形式如下: 你的函数:`int style(int H, int W, int R[500][500], int G[500][500], int B[500][500]);` - 描述:这个函数需要确定输入图像所属的风格。 - 参数: - $H$:图像中的行数; - $W$:图像中的列数; - $R$:大小为 $H×W$ 的二维数组,表示红色的饱和度; - $G$:大小为 $H×W$ 的二维数组,表示绿色的饱和度; - $B$:大小为 $H×W$ 的二维数组,表示蓝色的饱和度; - 返回:图像的风格类别,必须为 $1,2,3$ 或 $4$ 中的一种。 每个数组中的 $R[i][j]$,$G[i][j]$ 和 $B[i][j]$ 表示在第 $i$ 行,第 $j$ 列的像素的颜色值,取值范围都是 $0$ 到 $255$(包括 $0$ 和 $255$)。 ### 评分 本题没有子任务。本题分数取决于你的程序对多少图像进行了正确的分类。 假设你成功识别了百分之 $P$ 的图像(所以有 $0 \le P \le 100$): - 如果 $P < 25$ 那么你会得 $0$ 分。 - 如果 $25 \le P < 50$ 那么你会得 $0$ 到 $10$ 分,$P$ 和得分成线性关系。具体来说,你的得分为 $10 \times (P - 25) / 25$,向下取整。 - 如果 $50 \le P < 90$ 那么你会得到 $10$ 到 $100$ 分,$P$ 和得分成线性关系。具体来说你的得分为 $10 + (90 \times (P - 50) / 40)$,向下取整。 - 如果 $90 \le P$ 那么你会得到 $100$ 分。

输入格式

### 测试 你电脑上的样例评分程序将读入 `artclass.jpg`。这个文件包含一个 JPEG 格式的图像。

输出格式

说明/提示

### 限制 - 原题时间限制:$5$ 秒; - 原题内存限制:$64$ MiB; - $100 \le H \le 500$; - $100 \le W \le 500$。