P2389 电脑班的裁员
题意:长度为n的序列,选出k个连续的字段,使和最大(有负数)
暴力只选正数且不考虑k的边界问题50(数据。。。)
正解从$O(n^3)到O(n)$不等,($O(n)$不会)
DP
1、$O(n^3)$
以f[i][j]代表前i个数,选j段的最大ans
当前数不选:f[i-1][j]
当前数选:f[l][j-1]+s[i]-s[l](s为前缀和)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define int long long
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
int a[];
int n;
int s[];
int k;
int tot;
int f[][];
signed main()
{
n=read();
k=read();
for(int i=;i<=n;i++)
s[i]=s[i-]+(a[i]=read());
for(int i=;i<=n;i++)
{
for(int j=;j<=k;j++)
{
f[i][j]=f[i-][j];
for(int l=;l<i;l++)
{
f[i][j]=max(f[i][j],f[l][j-]+s[i]-s[l]);
}
}
}
put(f[n][k]);
olinr ~~(^_^)+love_nmr;
}
2、$O(n^2)$优化(1)
对于f[l][j-1]-s[l]的最大值可以一边DP一边处理出来
这样就减少了一维的枚举
注意要先枚举j,这样才能处理出
因为l<i,所以在枚举i的时候可以处理出(1---i-1,j)的最大值,直接转移
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define int long long
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
int a[];
int n;
int s[];
int k;
int tot;
int f[][];
signed main()
{
n=read();
k=read();
for(int i=;i<=n;i++)
s[i]=s[i-]+(a[i]=read());
for(int j=;j<=k;j++)
{
int maxn=;
for(int i=;i<=n;i++)
{
f[i][j]=max(f[i-][j],maxn+s[i]);
maxn=max(maxn,f[i][j-]-s[i]);
}
}
put(f[n][k]);
olinr ~~(^_^)+love_nmr;
}
3、$O(n^2),空间O(n)$
以f[i][j]代表前i个分成j段,第i个可以不选的ans
以g[i][j]代表前i个分成j段,第j个必须选的ans
g[i][j]=max(g[i-1][j],f[i-1][j-1])+a[i]
f[i][j]=max(f[i-1][j],g[i][j])
显然第一维可以滚动掉(类似01背包倒着枚举)
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cctype>
#include<algorithm>
using namespace std;
#define int long long
#define olinr return
#define _ 0
#define love_nmr 0
#define DB double
inline int read()
{
int x=,f=;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-')
f=-f;
ch=getchar();
}
while(isdigit(ch))
{
x=(x<<)+(x<<)+(ch^);
ch=getchar();
}
return x*f;
}
inline void put(int x)
{
if(x<)
{
x=-x;
putchar('-');
}
if(x>)
put(x/);
putchar(x%+'');
}
int a[];
int n;
int k;
int tot;
int g[];
int f[];
signed main()
{
n=read();
k=read();
for(int i=;i<=n;i++)
a[i]=read();
for(int i=;i<=n;i++)
for(int j=k;j>=;j--)
{
g[j]=max(g[j],f[j-])+a[i];
f[j]=max(f[j],g[j]);
}
put(f[k]);
olinr ~~(^_^)+love_nmr;
}
P2389 电脑班的裁员的更多相关文章
- LG P2389 电脑班的裁员
Description ZZY有独特的裁员技巧:每个同学都有一个考试得分$a_i(-1000 \leq a_i \leq 1000)$,在$n$个同学$(n \leq 500)$中选出不大于$k$段$ ...
- 洛谷P2389 电脑班的裁员(区间DP)
题目背景 隔壁的新初一电脑班刚考过一场试,又到了BlingBling的裁员时间,老师把这项工作交给了ZZY来进行.而ZZY最近忙着刷题,就把这重要的任务交(tui)给了你. 题目描述 ZZY有独特的裁 ...
- P2389 电脑班的裁员 (动态规划)
题目背景 隔壁的新初一电脑班刚考过一场试,又到了BlingBling的裁员时间,老师把这项工作交给了ZZY来进行.而ZZY最近忙着刷题,就把这重要的任务交(tui)给了你. 题目描述 ZZY有独特的裁 ...
- 洛谷 P2389 电脑班的裁员 解题报告
题意: 给定一段长为N的序列,选取其中的至多M段使这些子段和最大. 当N=1000时,我们可以采用动态规划解法 令\(dp[i][j][k]\)代表当前选至位置\(i\)处于第\(j\)段当前是否选取 ...
- 【Luogu】P2389电脑班的裁员(DP)
题目链接 sbt交了三遍才过是我的耻辱…… 就是设f[i][j]搞个三重循环DP一下,以上. #include<cstdio> #include<cstdlib> #inclu ...
- AMD宣布裁员7% 约710员工将失去工作
10 月 17 日.美国芯片生产商 AMD 周四宣布将裁员7%.并公布了不及预期的第四季度业绩展望.这将是 AMD 自 2011 年以来的第三轮大裁员. 就在一周之前,AMD 宣布罗瑞德(Rory R ...
- 微软中国裁员曝光:在CD结束后!薪酬不变!
聚众抗议的前诺基亚员工(腾讯科技配图) 腾讯科技 郭晓峰 腾讯科技刚刚获取了一份微软设备事业部中国区管理团队4日晚间发给被裁员工的补偿方案邮件. 邮件内容显示,微软承诺在收购诺基亚交易结束(2014年 ...
- Imcash:一边大裁员,一边大扩招,你能否成为区块链人才中的7%?
农历春节后,互联网创业圈并不太平. 最早,滴滴被曝裁员,占比约为全员的15%,涉及员工约2000人.CEO程维在全员会议上称公司要做好过冬准备.此后,京东接棒,其裁员对象上升至副总裁级别高管,比例占到 ...
- 【公众号系列】SAP将裁员4400人,颤抖吧!
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[公众号系列]SAP将裁员4400人,颤抖吧! ...
随机推荐
- 2015.1.3 DataGridView中嵌入其它控件
1.按正常方法绑定待嵌入列的值,先赋值为空也行. 2.添加combbox到datagrivdview中 dvaw.Controls.Add(cb_dir); 3.添加DataGridView Mous ...
- CentOS和Ubuntu系统下安装vsftp(助推大数据部署搭建)
不多说,直接上干货! 同时,声明,我这里安装的vsftp,仅仅只为我的大数据着想,关于网上的复杂安装,那是服务和运维那块.我不多牵扯,也不多赘述. 一.CentOS系统里安装vsftp 第一步:使用y ...
- python爬虫(4)--Cookie的使用
Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密) 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么 ...
- UAC(User Agent Client) 和 UAS(User Agent Server)
SIP协议采用Client/Server模型.每一个请求(Request)触发服务器的一个操作:每个操作被称为方法(Method):每个请求除了指明具体方法外,还携带了一系列的头域(Header fi ...
- FTP批量下载数据文件
包含ftp的命令脚本,建立临时文件. ::服务器连接信息 set username=root set password=root set ip=xxx.xxx.xxx.xxx set RemoteDi ...
- startactivityforresult使用
与startactivity基本相同,不过需要传入(intent,int)第二个int为请求ID,用来识别 在该activity中还应该重写nActivityResult(int requestCod ...
- 2018多校第九场1010 (HDU6424) 数学
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6424 解法:找规律.因为最多三项,a1^a2^a3可以拆成(a1+2)+(a2+1)*a3,然后建成数 ...
- 已看1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架、多线程(并发编程)、I/O(NIO)、Socket、JDBC、XML、反射等。[泛型]\
1.熟练的使用Java语言进行面向对象程序设计,有良好的编程习惯,熟悉常用的Java API,包括集合框架.多线程(并发编程).I/O(NIO).Socket.JDBC.XML.反射等.[泛型]\1* ...
- boost::thread 库的使用
转载自:http://blog.csdn.net/yockie/article/details/9181939 概要 通过实例介绍boost thread的使用方式,本文主要由线程启动.Interru ...
- PCL—点云分割(基于形态学) 低层次点云处理
博客转载自:http://www.cnblogs.com/ironstark/p/5017428.html 1.航空测量与点云的形态学 航空测量是对地形地貌进行测量的一种高效手段.生成地形三维形貌一直 ...