codeforce 332B Maximum Absurdity
原题链接
题意
一个长为N的序列,选择其中2个长为K的不相交区间,使两个区间和最大
题解
CF标签上写的好好的DP,做着做着发现就是前缀和思想嘛,哪里有DP?哪里有DP?
#include<bits/stdc++.h>using namespace std;
typedef long long LL;
const int maxn=2e5;LL sum[maxn+5];
LL premax[maxn+5];
int pre_id[maxn+5];
int arr[maxn+5];int main(void)
{#ifdef exfreopen ("in.txt","r",stdin);#endifint n,k;scanf("%d%d",&n,&k);sum[0]=0;for (int i=1;i<=n;++i){scanf("%d",&arr[i]);sum[i]=sum[i-1]+arr[i];}premax[k]=sum[k];pre_id[k]=1;for (int i=k+1;i<=n;++i){if (sum[i]-sum[i-k]>premax[i-1]){pre_id[i]=i-k+1;premax[i]=sum[i]-sum[i-k];}else{pre_id[i]=pre_id[i-1];premax[i]=premax[i-1];}}LL tmax=sum[2*k];int a=1;int b=k+1;for (int i=2*k+1;i<=n;++i){if (sum[i]-sum[i-k]+premax[i-k]>tmax){tmax=sum[i]-sum[i-k]+premax[i-k];a=pre_id[i-k];b=i-k+1;}}printf("%d %d\n",a,b);
}
codeforce 332B Maximum Absurdity相关推荐
- 【CodeForces 332B --- Maximum Absurdity】递推
[CodeForces 332B --- Maximum Absurdity]递推 题目来源:点击进入[CodeForces 332B - Maximum Absurdity] Description ...
- [CodeForces 332B]Maximum Absurdity[DP]
题目链接: [CodeForces 332B]Maximum Absurdity[DP] 题意分析: 寻找两个不重叠的长度为k的子串,使得它们之和最大. 解题思路: 第一想法是,处理出从这个点开始,长 ...
- CodeForces - 332B Maximum Absurdity 前缀和
这道题主要用的前缀和的思想,看了网上大佬的代码感觉很巧妙.我之前有好几个点没注意,WA了好几次,还有就是要用long long类型.不多说了,直接贴AC代码: #include<cstdio&g ...
- CodeForces 332B Maximum Absurdity
http://codeforces.com/problemset/problem/332/B 给出n个数,再个一个长度,问在n个数的数列中,找到2个相应长度的数串求和最大,且这两个数串不能重叠.只要对 ...
- Codeforces 332B Maximum Absurdity(暴力)
题意: 给你一个序列,让你在里面选择两个不想交的长度为k的字段,是的和最大. 我第一次做还是用的dp,感觉复杂度有点高啊,后来发现直接预处理就好了. 预处理需要三个数组,分别是sum[i],Max[i ...
- CodeForces 332B Maximum Absurdity(线段树单点更新)
题意: 给你一个序列,找两个长度为 k 且没有重合区间的数使得其和最大 解析: 线段树,就是把起点为 i 长度为 k 的和预处理出来,再枚举a,与a线段不重合的,后面的部分用线段树来找最大位置,总复杂 ...
- Codeforces 332B Maximum Absurdity(DP+前缀和处理)
题目链接:http://codeforces.com/problemset/problem/332/B 题目大意: 给你n个数和一个整数k,要求找到不相交的两个长度为k的区间,使得区间和最大,输出这两 ...
- codeforces 332b Maximum Absurdity dp
题意: 有n个数,找两个段(每个段长度为k)不相交,求出这两个段的和的最大值. 输出两个段的起始下标. 思路: dp[i][j]:走到i,已经选了j个段的最大值. 转移:dp[i][j] = dp[i ...
- 332B. Maximum Absurdity
题目链接 题意 给定一个含有n个数字的序列,从中找到两段长度为k的不重叠的连续序列,使得这两段序列之和最大. 思路 先利用前缀和求出每段长度为k的大小用inte数组存储,然后对inte从后往前以长度为 ...
最新文章
- mirna富集分析_2020年的3+分ceRNA分析长啥样?
- js知识点 掘金_关于webpack4的14个知识点,童叟无欺
- sqlserver 标准系统数据库
- 10 个适合网店使用的免费 Bootstrap 模板
- 台湾大学林轩田机器学习技法课程学习笔记10 -- Random Forest
- zzuli 2525: 咕咕的搜索序列
- 航天金税 接口_用友凭证接口可以实现数据之间无缝对接和打通
- docker构建oracle集群,docker 构建 oracle数据库 镜像-Go语言中文社区
- 图计算-Pregel-Hama
- 10 行代码玩转弹性调度的小把戏
- android ttc字体,android从ttc字体设置默认字体和字体系列
- 一款在Linux下运行Android应用的软件——xDroid
- ORACLE解析SOAPXML报文,xmltype extractvalue extract LPX-00210 中文乱码
- 计算机新手必学基础知识,5分钟带你全面了解电脑,新手入门必备知识,值得收藏!...
- 类似直播App的向右滑动清屏功能
- 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.2 动态数据流...
- 一个“脱裤子放屁“的功能!
- 计算机中职专业课考试科目,中职教师资格证专业课包括哪些
- java线程堆栈nid.tid_java排查一个线上死循环cpu暴涨的过程分析
- 下载的软件包保存在缓存中,直到下次成功执行事务。 您可以通过执行 'dnf clean packages' 删除软件包缓存。 错误:事务检查错误