type
status
date
slug
summary
tags
category
icon
password
链接:

题目描述

阿宁认为一个数组是漂亮数组,该数组需要存在一个总和是的倍数的子数组。
现在阿宁有一个长度为的数组,阿宁想要将数组分割出若干个数组,分割出的数组需要满足,按照分割顺序合并可以得到原数组
阿宁想知道将数组分割,最多可以获得多少个漂亮数组?

输入描述:

第一行输入两个整数
第二行输入个整数

输出描述:

输出一个整数。

示例1

输入

输出

说明

分割成[1,1,4],[5,1],[4],其中[1,1,4],[5,1]两个数组是漂亮数组。

题解

首先,对于一个给定的数组,如果第个以前和第个以后的都可以构成漂亮数组,那么我们来考虑一下将第个数字放在前面还是后面。答案是后面,因为往前面这个数组里面再加入数字是没有意义的,不如留给下一个数组,这也就构成了我们这道题的思路:贪心。
接下看究竟什么样的数组才是漂亮数组。按题意,有两种情况:
第一种为数组的某一个子数组的和为的倍数。这是我们将数组分为两部分,由前面的贪心思想可知,前一部分为无关项,后一部分为相关项,即前半部分的和为,后半部分和为,考虑到sum的结果可能超过long long的范围,所以我们考虑取余,并且可以通过前缀和来减少时间消耗。即当前缀和%k的余数之前已经出现过的时候,组成一最小的漂亮数组。
第二种是该数组的和恰好是的倍数,即前缀和%k的值为0。
下面是完整代码:
mutsumi的排列连通大小写转换
Serendipity
Serendipity
From CCNU
Announcement
type
status
date
slug
summary
tags
category
icon
password
本网站部署于国外服务器,国内访问较慢。多刷新或挂梯子。