2022GDUT寒训专题一J题
题目
题面
给你一个长度为 n的整数序列{A1,A2,⋯,A**n},要求从中找出一段连续的长度不超过 m的非空子序列,使得这个序列的和最大。
输入格式
第一行为两个整数 n,m;
第二行为 n个用空格分开的整数序列,每个数的绝对值都小于 1000。
对于50% 的数据1≤n,m≤1e4;
对于 100% 的数据,1≤n,m≤2×1e5。
输出格式
仅一个整数,表示连续长度不超过 m的最大非空子序列和。
样例
Input&Output
6 4
1 -3 5 1 -2 3
7
思路
这题看到求区间和,首先会想到前缀和预处理。然后看到是连续的长度不超过m的非空子序列,想到长度为m的滑动窗口的子序列。
现在要让这个和最大,也就是当前所走到的元素的前缀和减去一个所能取到的最小的前缀和。
所以我们先用滑动窗口动态找到区间最小前缀和,然后再拿当前前缀和减去区间最小前缀和即可。
以下两点需要注意:
1、此时的滑动窗口实际上可以取到m+1
2、若当前所找到的滑动窗口最小前缀和就是当前的值,那么说明一直没有更大的前缀和出现,那么答案为pre[i]-pre[i-1],即还原为元素本身。
代码
1 #include <iostream>
2 #include <algorithm>
3 using namespace std;
4 typedef long long ll;
5 const int maxn = 2e5+10;
6
7 long long pre[maxn];
8 int q[maxn*2];
9 int main()
10 {
11 ios_base::sync_with_stdio(false);
12 cin.tie(NULL);cout.tie(NULL);
13 //
14 int n, k;cin >> n >> k;
15 for(int i = 1;i <= n;++i) {int temp;cin >> temp;pre[i] = pre[i-1]+temp;}
16 //for(int i = 1;i <= n;++i) printf("pre = %lld\n", pre[i]);
17 //
18 ll ret = -maxn;
19 int head, tail, cnt;
20 head = 1, tail = 1;
21 q[head] = 0;
22 cnt = 0;
23 for(int i = 1;i <= n;++i)
24 {
25 while(head <= tail && i - q[head] + 1 > k+1) head++;
26 if(pre[q[head]] >= pre[i])
27 {
28 while(head <= tail && pre[q[head]] >= pre[i]) head++;
29 q[--head] = i;
30 }else
31 {
32 while(head < tail && pre[q[tail]] >= pre[i]) tail--;
33 q[++tail] = i;
34 }
35 if(i == q[head]) ret = max(ret, pre[i]-pre[i-1]);
36 else ret = max(ret, pre[i] - pre[q[head]]);
37 }
38 //
39 cout << ret << endl;
40 return 0;
41 }
2022GDUT寒训专题一J题的更多相关文章
- 2022GDUT寒训专题一C题
题目 题面 马在中国象棋以日字形规则移动. 请编写一段程序,给定n×m大小的棋盘,以及马的初始位置 (x, y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点. 输入格式 ...
- 2022GDUT寒训专题一I题
题目 题面 给一个长度为 N的数组,一个长为 K的滑动窗体从最左端移至最右端,你只能看到窗口中的 K 个数,每次窗体向右移动一位,如下图: 窗口位置 最小值 最大值 [1 3 -1] -3 5 3 6 ...
- [hdu5136]Yue Fei's Battle 2014 亚洲区域赛广州赛区J题(dp)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud 现场赛的时候由于有个地方有点小问题,没有成功AC,导致与金牌失之交臂. 由于今天下 ...
- 2017Summmer_上海金马五校 F题,G题,I题,K题,J题
以下题目均自己搜 F题 A序列 一开始真的没懂题目什么意思,还以为是要连续的子串,结果发现时序列,简直智障,知道题意之后,好久没搞LIS,有点忘了,复习一波以后,直接双向LIS,处理处两个数组L和R ...
- 牛客寒假基础集训营 | Day1 J题—u's的影响力(水题)
Day1 J题-u's的影响力 有一天,kotori发现了一个和lovelive相似的游戏:bangdream.令她惊讶的是,这个游戏和lovelive居然是同一个公司出的! kotori经过一段时间 ...
- 2019牛客暑期多校训练营(第四场)k题、j题
传送门 k题: 题意: 给你一串由数字构成的字符串,你从这个字符串中找子字符串使这个字符串是300的倍数 题解: 这道题和第三场的B题极其相似 首先可以把是三百的倍数分开,必须要是100和3的倍数 是 ...
- 2022GDUT寒假专题学习-1 B,F,I,J题
专题链接:专题学习1 - Virtual Judge (vjudge.net) B - 全排列 题目 思想 这道题可以用DFS进行求解,但是一看到全排列,其实可以立刻想到一个STL函数:next_pe ...
- 2015 UESTC 搜索专题J题 全都是秋实大哥 kmp
全都是秋实大哥 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/61 Desc ...
- 2013 长沙网络赛J题
思路:这题对于其他能退出所有值的情况比较好像,唯一不能确定的是XXOXXOXXOXX这个形式的序列,其中XX表示未知,O表示已知. 我们令num[1]=0,那么num[4]=sum[3]-sum[2] ...
随机推荐
- 分布式系统一致性算法(Paxos)
CAP理论 一致性(Consistency) 可用性(Availability) 分区容错性(网络分区)Partition toleranceCAP理论的特点,就是CAP只能满足其中 ...
- uniapp+nvue实现仿微信App聊天应用 —— 成功实现好友聊天+语音视频通话功能
基于uniapp + nvue实现的uniapp仿微信App聊天应用 txim 实例项目,实现了以下功能. 1: 聊天会话管理 2: 好友列表 3: 文字.语音.视频.表情.位置等聊天消息收发 4: ...
- JAVA发送xml格式的接口请求
/** * * @param urlStr 接口地址 * @param xmlInfo xml格式参数数据 * @return */ public static String sendMsgXml(S ...
- 【LeetCode】281. Zigzag Iterator 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 deque 日期 题目地址:https://leetc ...
- 【LeetCode】1024. Video Stitching 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 贪心 日期 题目地址:https://leetcod ...
- 【九度OJ】题目1118:数制转换 解题报告
[九度OJ]题目1118:数制转换 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1118 题目描述: 求任意两个不同进制非 ...
- 【九度OJ】题目1171:C翻转 解题报告
[九度OJ]题目1171:C翻转 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1171 题目描述: 首先输入一个5 * 5的数组,然 ...
- 【LeetCode】558. Quad Tree Intersection 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- 【LeetCode】556. Next Greater Element III 解题报告(Python)
[LeetCode]556. Next Greater Element III 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人 ...
- 【LeetCode】640. Solve the Equation 解题报告(Python)
[LeetCode]640. Solve the Equation 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: ht ...