Maximum Absurdity(dp思想+前缀和)
Maximum Absurdity
原题目:Maximum Absurdity
题解
- 处理长度为 k 的区间和用前缀和
- 处理不相交的两个区间和用 dp 思想,以 i 为界线,用四个数组分别记录位置 i 之前的区间和最优解以及位置和 i 之后的区间和最优解以及位置,然后遍历 i 得出最优解,巧妙解决不相交问题。
code
#include<iostream>using namespace std;int n, k;
int num[200010], index1[200010], index2[200010];
long long sum[200010], f[200010], b[200010];int main() {cin >> n >> k;int l, r;long long ans = 0;for (int i = 1; i <= n; i++) {cin >> num[i];sum[i] = sum[i - 1] + num[i];}for (int i = k; i <= n; i++) {if (f[i - 1] > sum[i] - sum[i - k]) {f[i] = sum[i] - sum[i - k];index1[i] = i - k + 1;} else {f[i] = f[i - 1];index1[i] = index1[i - 1];}}for (int i = n - k + 1; i >= k; i--) {if (b[i + 1] <= sum[i + k - 1] - sum[i - 1]) {b[i] = sum[i + k - 1] - sum[i - 1];index2[i] = i;} else {b[i] = b[i + 1];index2[i] = index2[i + 1];}}for (int i = k; i <= n - k; i++) {if (ans < f[i] + b[i + 1]) {ans = f[i] + b[i + 1];l = index1[i];r = index2[i + 1];}}cout << l << ' ' << r;return 0;
}
Maximum Absurdity(dp思想+前缀和)相关推荐
- [CodeForces 332B]Maximum Absurdity[DP]
题目链接: [CodeForces 332B]Maximum Absurdity[DP] 题意分析: 寻找两个不重叠的长度为k的子串,使得它们之和最大. 解题思路: 第一想法是,处理出从这个点开始,长 ...
- codeforces 332b Maximum Absurdity dp
题意: 有n个数,找两个段(每个段长度为k)不相交,求出这两个段的和的最大值. 输出两个段的起始下标. 思路: dp[i][j]:走到i,已经选了j个段的最大值. 转移:dp[i][j] = dp[i ...
- 【CodeForces 332B --- Maximum Absurdity】递推
[CodeForces 332B --- Maximum Absurdity]递推 题目来源:点击进入[CodeForces 332B - Maximum Absurdity] Description ...
- 刷题之路:DP思想(动态规划)
dp一般用于解决决策问题,比如说你的每一步都有好几种处理方式,怎么选择使得最后的结果满足或者接近于你的预期是需要考虑的问题. 所以dp问题实际上也就是最优解的问题 一般采用的方式就是将问题拆分成若干个 ...
- HYSBZ - 3309 D - DZY Loves Math(莫比乌斯反演+组合思想+DP思想)*好题。。。
题目链接:https://cn.vjudge.net/problem/HYSBZ-3309 #include<bits/stdc++.h> using namespace std;#def ...
- Codeforces 332B Maximum Absurdity(DP+前缀和处理)
题目链接:http://codeforces.com/problemset/problem/332/B 题目大意: 给你n个数和一个整数k,要求找到不相交的两个长度为k的区间,使得区间和最大,输出这两 ...
- CodeForces - 332B Maximum Absurdity 前缀和
这道题主要用的前缀和的思想,看了网上大佬的代码感觉很巧妙.我之前有好几个点没注意,WA了好几次,还有就是要用long long类型.不多说了,直接贴AC代码: #include<cstdio&g ...
- codeforces332B - Maximum Absurdity 线段数 or dp
题意:给你一个序列,找两个长度为 k 且没有重合区间的数使得其和最大 解题思路: 1)线段树 想了半天想不出只能先用线段树撸了一发,这题dp 第一名只要了 9分钟. 就是把起点为 i 长度为 k 的 ...
- Maximum Absurdity
题目描述 Reforms continue entering Berland. For example, during yesterday sitting the Berland Parliament ...
最新文章
- javap查看class文件
- struts2文件上传一个错误的解决
- 7600和6500的一些常见问题
- python 指定证书验证_如何在python中验证SSL证书?
- [Hadoop in China 2011] 中兴:NoSQL应用现状及电信业务实践
- 第四节: Quartz.Net五大构件之Trigger通用用法(常用方法、优先级、与job关联等)
- Jenkins系列-Jenkins插件备份
- 【静默】Oracle各类响应文件何在?
- 4.自定义的Spring Boot Starters
- (13)数据结构-先序中序还原二叉树
- 现代通信原理思维导图--第二章 确知信号
- 中兴M6000 常用业务命令
- Pytorch:目标检测网络-人体关键点检测
- 74LVC245电平转换电路
- WEditor(元素定位工具)安装和定位界面元素
- DockOne微信分享(一三四):国内某大型酒店管理集团基于Kubernetes的实践
- 宝塔面板windows建站教程_WindowsVPS-服务器安装宝塔面板建站教程宝塔面板,
- 无法停止USB设备通用卷的解决办法
- [案例2-1]商品入库
- 8大主流自媒体平台运营方式分享,别再说做自媒体赚不到钱