当前位置: 首页 > news >正文

专业设计网址青岛网站开发一起来看在线观看免费

专业设计网址青岛网站开发,一起来看在线观看免费,北京师大互联网公司排名,公司网站招聘板块怎么做文章目录 题目描述输入格式输出格式样例输入1样例输出1样例输入2样例输出2提交链接提示 解析参考代码 题目描述 你有一个由 n n n 个整数组成的数组 a a a 。 你要对它进行 k k k 次操作。其中一个操作是选择数组 a a a 的任意连续子数组(可能为空),并在数组的…

文章目录

  • 题目描述
    • 输入格式
    • 输出格式
    • 样例输入1
    • 样例输出1
    • 样例输入2
    • 样例输出2
    • 提交链接
    • 提示
  • 解析
  • 参考代码

题目描述

你有一个由 n n n 个整数组成的数组 a a a

你要对它进行 k k k 次操作。其中一个操作是选择数组 a a a 的任意连续子数组(可能为空),并在数组的任意位置插入该子数组的和。

你的任务是找出 k k k 次这样的操作后数组可能的最大和。

由于这个数字可能非常大,请输出取模为 1 0 9 + 7 10^9+7 109+7 的答案。

提示:数字 x m o d p x\mod\ p xmod p 的余数等于最小非负数 y y y,满足 x = p ⋅ q + y x=p⋅q+y x=pq+y ( q q q 为整数)。

输入格式

第一行包含两个整数 n n n k ( 1 ≤ n , k ≤ 2 ∗ 1 0 5 ) k(1 \leq n,k \leq 2*10^5) k(1n,k2105)—分别是数组的长度 a a a 和操作次数。

第二行包含 n n n 个整数 a 1 , a 2 , . . . , a n ( − 1 0 9 ≤ a i ≤ 1 0 9 ) a_1,a_2,...,a_n(-10^9 \leq a_i \leq 10^9) a1,a2,...,an(109ai109)

输出格式

输出一个整数—经过 k k k 次运算模数 1 0 9 + 7 10^9+7 109+7 后得到的数组最大和。

样例输入1

2 2
-4 -7

样例输出1

999999996

样例输入2

3 3
2 2 8

样例输出2

96

提交链接

https://hydro.ac/d/lp728/p/13

提示

样例解释 1 1 1:
在第一个测试用例中,最好在数组中取一个空子数组两次,并在任意位置插入空子数组的和 ( 0 ) (0) (0),这样得到的数组和为 ( − 4 ) + ( − 7 ) + 0 + 0 = − 11 (-4)+(-7)+0+0=-11 (4)+(7)+0+0=11,模数 1 0 9 + 7 10^9+7 109+7 999999996 999999996 999999996

解析

核心:找到数组中总和最大的子数组。

s s s 表示为原始数组的总和, x x x 表示为原始数组中总和最大的子数组的总和。
k = 1 k=1 k=1 时,答案为 s + x s+x s+x k = 2 k=2 k=2 时,答案为 s + x + 2 ∗ x s+x+2*x s+x+2x

任意 k k k ,具有最大和的子数组的和最初是 x x x ,然后是 2 ⋅ x 2⋅x 2x ,然后是 4 ⋅ x 4⋅x 4x , … , 2 k − 1 ⋅ x 2^{k−1}⋅x 2k1x
答案等于 s + x + 2 ⋅ x + ⋯ + 2 k − 1 ⋅ x = s + 2 k ⋅ x − x s+x+2⋅x+⋯+2^{k−1}⋅x=s+2^k⋅x−x s+x+2x++2k1x=s+2kxx

取余的时候要考虑负数的情况。若为负数可以先加上模数再进行取余。

参考代码

#include<bits/stdc++.h>
#include<algorithm>
using namespace std;
const int maxn = 2e5 + 9 , mod = 1e9 + 7;
typedef long long ll;
int t , n , a[maxn] , k;
int main()
{ll ans = 0;cin >> n >> k;for(int i = 1; i <= n; i++){cin >> a[i];ans += a[i];}ans = (ans % mod + mod) % mod;ll sum = 0 , mx = 0;for(int i = 1; i <= n; i++)  //区间最大和{sum += a[i];if(sum < 0)sum = 0;mx = max(mx , sum);}mx %= mod;ll two = 1;for(int i = 1; i <= k; i++)two = two * 2 % mod;ans = (ans + two * mx - mx + mod) % mod;cout << ans << endl;return 0;
}
http://www.bjxfkj.com.cn/article/109148.html

相关文章:

  • 金融网站建设案例部队网站建设方案
  • 手机应用市场网站开发百灵鸟优化
  • 专门做推荐的网站中小学网站建设论文
  • 长沙城乡建设网站首页做侵权视频网站
  • 在哪里做卖车网站企业网站制作公司24小时接单
  • 中国最火的网站长沙3天2晚自由行攻略
  • 移动端快速建站的方法做网页和网站有什么区别吗
  • 三水 网站建设ccyy切换路线专线
  • 酒店网站开发程序员网站建设前台功能
  • 创建网站的英语温州做网站技术员
  • 做视频导航网站有哪些网站排名不稳定怎么办
  • 兼职做页面的网站沈阳专业做网站方案
  • 灯具做外贸的网站有哪些seo排名优化点击软件有哪些
  • 建站 网站程序有哪些深圳外包网站
  • 建设互联网教育网站wordpress 手机模板调用pc内容
  • 中国手机网站sem seo招聘
  • 制作网站分析商业模式上海建材网站建设
  • 芜湖最新通知今天关键词优化搜索排名
  • 横店建设网站网站建设客户管理系统
  • 国外有哪些做建筑材料的网站网站建设的基本原则
  • 做网站一般的尺寸呼伦贝尔寰宇网站建设
  • 广东广州免费建站三把火科技网站设计
  • 网站运营管理办法微客通达推广引流
  • 做网站有多难国外网站能否做百科参考资料
  • 淘宝客网站主机非法网站开发者刑事责任
  • 蛋糕网站建设影视采集网站怎么做收录
  • 北京seo网站推广费用17一起做网店网站潮汕
  • 淮安企业网站建设大气的网站首页
  • 企业宣传网站多大主机多站点wordpress安装
  • 网站建站行业新闻wordpress tipton