Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array (简单DP)
题目:https://codeforces.com/contest/1155/problem/D
题意:给你n,x,一个n个数的序列,你可以选择一段区间,区间的数都乘以x,然后求出最大字段和
思路:
x正数的时候我们就是求出最大字段和然后乘以x即可
x为负数时,我们可以把一段负数乘以x,然后再与之前的正数连接,求出最大字段和,我们想一下
首先并不是直接求出最小字段和就可以的,给出一组样例
10 -1
0 -10 -10 -10 40 -10 -10 20 0 0
答案应该是80,而像上面的做法是不行的,我们应该要把序列分成三部分
最大字段和 乘以x的最大字段和 最大字段和
这样连着起来的三段枚举出来才是最优解
这个题显然只能让我们dp O(n)复杂度来解决
首先这应该分为三种状态,
第一种状态 dp[1] 求最大字段和即可 推导式 dp[1]=max(dp[1]+a[i],0);
第二种状态 dp[2]应该是前面的最大字段和+当前的数 推导式 dp[2]=max(dp[1],dp[2]+x*a[i]);
第三种状态 dp[3]显然是前面两段的和再加上当前 推导式 dp[3]=max(dp[2],dp[3]+a[i]);
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,x,y;
ll dp[],ans;
int main(){
scanf("%lld%lld",&n,&x);
for(int i=;i<=n;i++){
scanf("%lld",&y);
dp[]=max(0LL,dp[]+y);
dp[]=max(dp[],dp[]+y*x);
dp[]=max(dp[],dp[]+y);
ans=max(ans,dp[]);
}
printf("%lld\n",ans);
return ;
}
Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array (简单DP)的更多相关文章
- Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array 分类讨论连续递推dp
题意:给出一个 数列 和一个x 可以对数列一个连续的部分 每个数乘以x 问该序列可以达到的最大连续序列和是多少 思路: 不是所有区间题目都是线段树!!!!!! 这题其实是一个很简单的dp 使用的是分 ...
- Educational Codeforces Round 63 (Rated for Div. 2) D. Beautiful Array(动态规划.递推)
传送门 题意: 给你一个包含 n 个元素的序列 a[]: 定义序列 a[] 的 beauty 为序列 a[] 的连续区间的加和最大值,如果全为负数,则 beauty = 0: 例如: a[] = {1 ...
- Educational Codeforces Round 63 (Rated for Div. 2) 题解
Educational Codeforces Round 63 (Rated for Div. 2)题解 题目链接 A. Reverse a Substring 给出一个字符串,现在可以对这个字符串进 ...
- Educational Codeforces Round 63 (Rated for Div. 2) E 带模高斯消元
https://codeforces.com/contest/1155/problem/E 题意 \(f(x)=a_0+a_1x+a_2x^2+...+a_kx^k,k \leq 10,0 \leq ...
- Educational Codeforces Round 63 (Rated for Div. 2) D dp(最大连续子序列)
https://codeforces.com/contest/1155/problem/D 题意 一个n个数的数组\(a[i]\),可以选择连续的一段乘x,求最大连续子序列的值 题解 错误思路:贪心, ...
- Educational Codeforces Round 63 (Rated for Div. 2) B. Game with Telephone Numbers 博弈思维+模拟+贪心思维
题意:博弈题面 给出一个数字序列 (>=11) 有两个人任意删除数字 直到 数字只剩下11位 如果删除后的数字串开头是8那么就是第一个赢 否则就是第二个人赢 第一个人先手 数字序列一定是奇 ...
- Educational Codeforces Round 63 (Rated for Div. 2) C. Alarm Clocks Everywhere gcd
题意:给出一个递增的时间序列a 给出另外一个序列b (都是整数) 以b中任选一个数字作为间隔 自己从1开始任选一个时间当成开始时间 输出选择的数字标号以及 开始时间 思路 直接求间隔的公共gc ...
- Educational Codeforces Round 63 (Rated for Div. 2)
传送门 A. Reverse a Substring 题意: 给你一串 s,让你判断能否通过反转区间[l,r]的元素,使得反转后的串的字典序小于 s: 如果能,输出 "YES",并 ...
- Educational Codeforces Round 56 (Rated for Div. 2) D. Beautiful Graph 【规律 && DFS】
传送门:http://codeforces.com/contest/1093/problem/D D. Beautiful Graph time limit per test 2 seconds me ...
随机推荐
- Hadoop之搭建完全分布式运行模式
一.过程分析 1.准备3台客户机(关闭防火墙.修改静态ip.主机名称) 2.安装JDK 3.配置环境变量 4.安装Hadoop 5.配置集群 6.单点启动 7.配置ssh免密登录 8.群起并测试集群 ...
- kafka consumer 配置详解
1.Consumer Group 与 topic 订阅 每个Consumer 进程都会划归到一个逻辑的Consumer Group中,逻辑的订阅者是Consumer Group.所以一条message ...
- SPI通信的基础知识
1 SPI物理层 SPI通信设备之间常用物理连接方式如下图 SPI通讯使用3条总线及片选线,3条总线分别为SCK.MOSI.MISO,片选线为CS. CS:从设备选择信号线,常称为片选信号线,也称 ...
- VMware虚拟机安装CentOS 6.9图文教程
1.Win7安装VMware虚拟机比较简单,直接从官网下载VMware安装即可,这里不再叙述. 2.接着从CentOS官网直接下载CentOS 6.9的iso镜像文件. 3.打开VMware,点击创建 ...
- 关于spark写入文件至文件系统并制定文件名之自定义outputFormat
引言: spark项目中通常我们需要将我们处理之后数据保存到文件中,比如将处理之后的RDD保存到hdfs上指定的目录中,亦或是保存在本地 spark保存文件: 1.rdd.saveAsTextFile ...
- 关于requestAnimationFrame与setInterval的一点差异
requestAnimationFrame与setInterval都可以实现循环触发事件,但是setInterval是基于时间的,而requestAnimationFrame是基于帧数的,在我的一次开 ...
- Caffe on Mac OS X 10.11
在Mac环境安装Caffe环境(CPU_ONLY) http://blog.csdn.net/xidiancoder/article/details/52081519 有问题 http://blo ...
- WinDbg调试 C# dmp
WinDbg C#调试 打开windbg,加载需要调试的c# dmp. 设置好sympath等. 查看蹦会的c#主进程依赖的.Net环境 可以查看进程名对应的*.config文件. 开始加载符号,假设 ...
- Spring Boot Application
spring boot默认已经配置了很多环境变量,例如,tomcat的默认端口是8080,项目的contextpath是“/”等等,spring boot允许你自定义一个application.pro ...
- learning coap protocol
reference: http://coap.technology/spec.html