#D33024. 亡羊补栏(sheep)
亡羊补栏(sheep)
题目描述
小明的牧场外面围着一排栅栏,一共 块木板,从左到右编号为 。第 块木板的状态用 表示:
- :这块木板破损了;
- :这块木板完好。
昨天夜里狼来过,栅栏上留下了几处破损。小明决定去买补丁来修补。
商店里卖的补丁按长度计价:一块长度为 的补丁可以一次性盖住连续的 块木板,售价为 元。
- 补丁允许盖在已经完好的木板上,多盖不加钱;
- 补丁必须完整地落在栅栏内:若一块长度为 的补丁盖住区间 ,则必须满足 且 。
小明希望花的钱最少,使每一块破损的木板都至少被某一块补丁盖住。请你求出最小总花费。
输入格式
从文件 sheep.in 读入数据。
第一行一个整数 ,表示木板数量。
第二行一个长度为 的字符串 ,仅由字符 0 和 1 组成,其中第 个字符即为 。
输出格式
输出到文件 sheep.out。
输出一行一个整数,表示最小总花费。
样例1&2
7
1011101
2
10
1010101010
3
解释
在第一组数据中,破损的木板是第 块和第 块。用一块长度为 的补丁盖住区间 ,花费 元;也可以用两块长度为 的补丁分别盖 和 ,花费 元。最小花费为 。
在第二组数据中,破损的木板是第 块。一块长度为 的补丁盖住 ,花费 元。逐块单独盖需要 元,所以最小花费为 。
样例 3-7
见下发文件。
数据规模与约定
下发文件分别对应子任务 。
| 子任务编号 | 分值 | |
|---|---|---|
对于 的数据:保证 。