对于第 k 个块,原本两位记为a,b。若把该块改成 [v,v],代价是 costk(v)=1[a=v]+1[b=v]=2-1[a=v]-1[b=v] 它只可能是 0,1,2 三种情况: 若 a=b=v 则代价为 0;若 v∈a,b 且 a=b 则代价为 1;否则为 2。
相邻块必须选择不同的 v。因此做一维按块推进、按末尾选值的动态规划:
小蓝正在调整一个由数字组成的序列,以满足特定的校验规则。她需要将序列从左至右划分为连续的长度为 2 的片段;每个片段内的两个数字必须相等;相邻两个片段的数字必须不同。小蓝可以修改序列中的任意数字,每次修改可将某个位置的数字替换为 0 到 9 之间的任意数字。请你帮她计算最少需要修改多少个数字,才能使整个序列符合要求。
序列的长度 n 为偶数且满足 2≤n≤2×105,序列中仅包含数字 0 到 9。
第一行包含一个偶数 n(2≤n≤2×105),表示序列的长度。
第二行包含一个长度为 n 的字符串 s,由数字字符 '0' 至 '9' 组成。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册