QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 64 MB Total points: 100

#12610. JOI 旗帜

Statistics

你决定制作一面 $K$ 级的 JOI Flag 作为日本信息学奥林匹克竞赛的新旗帜。

定义如下: $0$ 级 JOI Flag 是一个 $1 \times 1$ 的方格,上面写有 'J', 'O', 'I' 中的任意一个字符。 对于整数 $m > 0$,$m$ 级 JOI Flag 是一个 $2^m \times 2^m$ 的方格,每个格子上都写有 'J', 'O', 'I' 中的一个字符,且满足以下条件:将整个方格平分为 4 个 $2^{m-1} \times 2^{m-1}$ 的正方形时,这 4 个部分分别由一个 $m-1$ 级 JOI Flag、一个仅由 'J' 组成的区域、一个仅由 'O' 组成的区域和一个仅由 'I' 组成的区域组成。

例如:

OIJJ
JJJJ
OOII
OOII

是一个 $2$ 级 JOI Flag。此外,

IIIIIIOO
IIIIIIOO
IIIIJOJJ
IIIIOIJJ
JJJJOOOO
JJJJOOOO
JJJJOOOO
JJJJOOOO

是一个 $3$ 级 JOI Flag。

你手头有一个 $2^K \times 2^K$ 的旗帜,其中一些格子上已经写有 'J', 'O', 'I' 中的字符。你可以通过添加字符或修改已有的字符来完成 $K$ 级 JOI Flag。在没有字符的格子上写字符的代价为 $0$,而修改已有格子的字符代价为 $1$。

请计算完成 $K$ 级 JOI Flag 所需的最小代价。

题目描述

给定你手头旗帜的信息,编写一个程序,计算完成 $K$ 级 JOI Flag 所需的最小代价。

数据范围

  • $1 \le K \le 30$
  • $1 \le N \le 1000$
  • $1 \le X_i \le 2^K$
  • $1 \le Y_i \le 2^K$
  • $C_i$ 为 'J', 'O', 'I' 中的任意一个。
  • 所有坐标组 $(X_i, Y_i)$ 均不相同。

输入格式

从标准输入读取以下内容: 第一行包含两个整数 $K$ 和 $N$,以空格分隔。$K$ 表示 JOI Flag 的级别,$N$ 表示已填入字符的格子数量。 接下来的 $N$ 行包含字符信息。第 $i+1$ 行包含 $X_i, Y_i, C_i$,以空格分隔,表示字符 $C_i$ 位于从左往右第 $X_i$ 列,从上往下第 $Y_i$ 行。

输出格式

将完成 $K$ 级 JOI Flag 所需的最小代价作为整数输出到标准输出。

子任务

在所有测试数据中,有 $40\%$ 的分数满足 $K \le 10$。

样例

样例输入 1

2 10
2 2 J
3 3 I
1 3 I
1 1 O
3 2 J
2 1 I
4 1 O
3 4 I
4 4 O
2 3 O

样例输出 1

3

说明

该输入表示如下旗帜(用 '-' 表示未填写的格子):

OI-O
-JJ-
IOI-
--IO

代价为 $3$ 时,可以将其变为:

OIJJ
JJJJ
OOII
OOII

样例输入 2

4 30
16 14 J
2 8 O
10 9 J
10 13 I
6 6 O
11 14 I
1 2 I
3 2 O
3 10 O
1 12 I
4 11 I
9 5 J
15 1 O
12 4 I
16 5 J
10 7 J
3 8 J
4 10 I
4 7 I
2 11 I
2 12 O
15 5 J
15 7 J
6 9 J
5 7 O
14 5 J
12 11 J
15 10 O
13 16 I
13 11 I

样例输出 2

9

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.