题目 题意:给定一个±字符串,奇数位上的字符串的贡献为正,偶数位上的字符串贡献为逆(+符号做-贡献,-符号做+贡献),字符串的权值为字符串上所有位的贡献和。有若干次查询,每次查询区间[l,r]的字符串,需要删掉最少多少字符,才能使该子串的权值刚好为0。 官方题解 思路:定义b[i]为去掉第i位的字符后,剩余字符串的权值。该数组有一个特点,就是相邻的元素的绝对值差值要么0(同号),要么为2(异号)。现在考虑长度为奇数的字符串,我们设第一位为b[1],最后一位为b[n]。 (1)如果字符串本身为0,则找到了,不需要删字符; (2)假设b[1]或b[n]为0,那么我们就找到权值为0的字符串了,只需删1个字符 (3)如果b[1]和b[n]都不为0,那么我们可以证明,b[1]和b[n]是异号的。(证明很简单,我们可以把字符串首尾4四种组合±,++,-+,—都算一下,即可得出该结论)不妨设b[1]>0,b[n]
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?