上海计算机学会2024年8月月赛C++丙组T5划分(二)

划分(二)

内存限制: 256 Mb时间限制: 1000 ms

题目描述

给定一个长度为 n 的排列 p1​,p2​,...,pn​,请你将其划分成 m 个连续段,并最大化每个连续段中最大值的和,并求出取到该最大值有多少种方案?(方案数对10^9+7取模)

输入格式

输入共两行:
第一行,两个正整数 n,m 表示排列的长度和划分的段数。
第二行,n 个正整数,表示给定的排列。

输出格式

输出共两行:
第一行,一个正整数表示划分后能取到的最大和。
第二行,一个正整数,表示方案数对10^9+7取模。

数据范围
  • 对于 30% 的数据,1≤m≤n≤20
  • 对于 60% 的数据,1≤m≤n≤10^3
  • 对于 100% 的数据,1≤m≤n≤10^5
样例数据

 输入:
4 2
4 1 3 2
输出:
7
2
说明:
两种划分方法能取到7
方案1: 4 | 1 3 2   -->  第一段最大值是4、第二段最大值是3,总和为7
方案2: 4 1 | 3 2   -->  第一段最大值是4、第二段最大值是3,总和为7
输入:
4 4
3 2 1 4
输出:
10
1

解析:

先按大小排序,找出前m大的数,然后确定他们的位置ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长春高老师信奥工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值