【GDOI2018 Day1】密码锁 题解

本文介绍了GDOI2018 Day1的密码锁问题,包括题目描述、输入输出格式、样例数据及数据约束。作者分享了解题思路,通过差分数组和记忆化搜索进行暴力求解,并提出了优化方案:对差分数组排序,利用前缀和找到最优分割点,实现原数组在模m意义下的转换。
摘要由CSDN通过智能技术生成

【GDOI2018 Day1】密码锁

Description

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Input

在这里插入图片描述

Output

在这里插入图片描述

Sample Input

Sample Input1
4 3
1 2 1 0

Sample Input2
11 8
1 2 3 4 5 0 5 4 3 2 1

Sample Input3
20 100
30 91 15 72 61 41 10 37 98 41 94 80 26 96 10 88 59 5 84 14

Sample Output

Sample Output1
2

Sample Output2
8

Sample Output3
313

Data Constraint

在这里插入图片描述

题解

考场这题我打了100行的暴力,记忆化搜索加剪枝 (鬼知道我怎么做得到的)
这题乍一看似乎没什么思路,但我们换个方向来想,如果把 n n n个数在模 m m m的意义下差分一下(再最后补一个 a [ n + 1 ] a[n+1] a[n+1] a [ n ] a[n] a[n])差分,那么如果我们想要把 a a a数组全部变成0,也就相当于把差分数组(假设是 c f [ i ] cf[i] cf[i])全部变成0
然后我们又知道,在差分数组修改一段区间 [ l , r ] [l,r] [l,r]时(假设是加1),是将 c f [ l ] + 1 , c f

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值