QOJ.ac

QOJ

시간 제한: 1 s 메모리 제한: 32 MB 총점: 10

#13513. Dyzio

통계

Dyzio 是 Jasiek 的朋友,他也喜欢谜题。以下是 Dyzio 给 Jasiek 带来的一道谜题:

“Jasiek,给你一根绳子,需要把它剪成更短的小段。我不会直接告诉你怎么做,但你看这串由 0 和 1 组成的序列。开头的 1 表示需要将绳子剪成两半。但如果第一个数字是 0,那么它将是序列中唯一的数字,表示你什么都不需要做——我想保留整根绳子。如果你必须剪开绳子,那么在第一个 1 之后,我写下了如何处理左边那段(采用与整根绳子相同的规则),接着写下了如何处理右边那段(始终遵循相同的记录规则)。你必须总是先剪左边那段,然后才能开始剪右边那段。现在开始剪吧,并告诉我,为了得到(第一根)最短的绳子,最少需要进行多少次剪切。”

不幸的是,妈妈把剪刀藏起来不给 Jasiek,但幸运的是手边有一台电脑,Jasiek 很快写了一个程序来模拟剪绳子的过程。你也能写出这样一个程序吗?

写一个程序:

  • 从标准输入读入剪绳子方式的描述,
  • 计算为了得到(第一根)最短的绳子,最少需要进行多少次剪切,
  • 向标准输出输出结果。

输入格式

输入的第一行包含一个整数 $n$($1 \le n \le 20\,000$)。

输入的第二行包含一个长度恰好为 $n$ 的 01 字符串(中间没有空格的 0 和 1 序列),表示 Dyzio 提供的剪绳子方式的描述。

输出格式

输出仅包含一行,其中有一个整数,表示为了得到最短的绳子所需要进行的最少剪切次数。

样例

输入样例 1

9
110011000

输出样例 1

4

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.