题解 | #子数组异或和为0的最多划分#

子数组异或和为0的最多划分

http://www.nowcoder.com/practice/77e9828bbe3c4d4a9e0d49cc7537bb6d

n = int(input())
nums = list(map(int, input().split()))
dp = [0] * n
before = {0: -1}
before[nums[0]] = 0
dp[0] = 0 if nums[0] != 0 else 1
eor = nums[0]
for i in range(1, n):
    eor ^= nums[i]
    if eor in before:
        index = before[eor]
        if index == -1:
            dp[i] = 1
        else:
            dp[i] = dp[index] + 1
    before[eor] = i
    dp[i] = max(dp[i - 1], dp[i])
print(dp[-1])

全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
07-07 12:25
门头沟学院 Java
程序员牛肉:你这个智邮公司做的就是那个乐山市税务系统的服务吗?
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
黑皮白袜臭脚体育生:看了这篇帖子之后已经第一百次质问老妈,仍然没有得到我的老妈是老板的回答
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务