luogu P4744 [Wind Festival]Iron Man
再次感谢题解区大佬的指点
规定\(pre[i]\)表示前缀\(i\)的前缀和,\(sum[i][j]\)表示区间\([i,j]\)之和
令\(f[i][j]\)表示前i个数选出j段的最大值,\(g[i][j]\)表示前i个数选出j段,且第一段一定选到第一个位置的最大值(这里都不强制选第\(i\)个数)
至于转移,枚举j,然后从前往后枚举\(i\),可以从\(f[i-1][j]\)转移过来,也可以另选一段.
这里记录一个前缀最大值\(ma=max(f[l][j-1]-pre[l])(l<i)\),转移时从\(ma+pre[i]\)转移
因为\(ma+pre[i]=max(f[l][j-1]-pre[l])+pre[i]=max(f[l][j-1]-pre[l]+pre[i])=max(f[l][j-1]+sum[l+1][i])(l<i)\)
预处理时,\(\forall i\ f[i][0]=0\)并且\(g[i][1]\)取最大前缀和
// luogu-judger-enable-o2
#include<algorithm>
#include<iostream>
#include<cstring>
#include<complex>
#include<cstdio>
#include<vector>
#include<cmath>
#include<ctime>
#include<queue>
#include<map>
#define LL long long
#define il inline
#define re register
using namespace std;
const LL mod=1000000007;
il LL rd()
{
re LL x=0,w=1;re char ch;
while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*w;
}
int a[100010],hd,tl,n,k;
int f[100010][60],g[100010][60],ans,mi;
int main()
{
n=rd(),k=rd();
for(int i=1;i<=n;i++) a[i]=rd()+a[i-1];
memset(f,-0x3f3f3f,sizeof(f));
memset(g,-0x3f3f3f,sizeof(g));
mi=f[0][0];
for(int i=0;i<=n;i++) f[i][0]=0;
for(int j=1;j<=k;j++)
{
int ma=mi;
for(int i=j;i<=n;i++)
{
f[i][j]=max(f[i-1][j],ma+a[i]);
ma=max(ma,f[i][j-1]-a[i]);
}
}
ans=f[n][k];
for(int i=1;i<=n;i++) g[i][1]=max(g[i-1][1],a[i]);
for(int j=2;j<=k;j++)
{
int ma=mi;
for(int i=j;i<=n;i++)
{
g[i][j]=max(g[i-1][j],ma+a[i]);
ma=max(ma,g[i][j-1]-a[i]);
}
}
for(int i=k;i<=n;i++) ans=max(ans,g[i][k]+a[n]-a[i]);
printf("%d\n",ans);
return 0;
}
luogu P4744 [Wind Festival]Iron Man的更多相关文章
- T25990 [Wind Festival]Running In The Sky
T25990 [Wind Festival]Running In The Sky 题目背景 [Night - 20:02[Night−20:02 P.M.]P.M.] 夜空真美啊--但是--快要结束了 ...
- 洛谷P4742 [Wind Festival]Running In The Sky [Tarjan缩点,DAGDP]
题目传送门 Running In The Sky 格式难调,题面就不放了. 分析: 一句话题意:给定一张带点权的有向图,求最长点权路径及该路径上的最大点权. 很明显的$DAGDP$,因此需要缩点,将该 ...
- P4742 【[Wind Festival]Running In The Sky】
相信来做这道题的人肯定都学过\(Tarjan\)缩点吧,如果没有建议先去做P3387 [模板]缩点,如果你忘了,建议也去看看 满足上面要求后,你会惊奇发现,这两道题基本一样,唯一的差别就是这道题需要记 ...
- 图论初步-Tarjan算法及其应用
暑假刷了一堆Tarjan题到头来还是忘得差不多. 这篇博客权当复习吧. 一些定义 无向图 割顶与桥 (划重点) 图G是连通图,删除一个点表示删除此点以及所有与其相连的边. 若删除某点u后G不再连通,那 ...
- UVALive 7281 Saint John Festival (凸包+O(logn)判断点在凸多边形内)
Saint John Festival 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/J Description Porto's ...
- Atcoder CODE FESTIVAL 2016 Grand Final E - Water Distribution
Atcoder CODE FESTIVAL 2016 Grand Final E - Water Distribution 题目链接:https://atcoder.jp/contests/cf16- ...
- POJ2763 Housewife Wind
Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 9701 Accepted: 2661 Description Aft ...
- wind的R接口、况客RSDK学习,双冒号以及quantmod主题
本文主要参考:来自segmentfault上的FinanceR的专栏 https://segmentfault.com/a/1190000004580610 并自己对生疏不解之处做了补充和注释. 当然 ...
- World Wind .NET源码编译问题处理
World Wind .NET源码编译问题处理 下载了World_Wind_1.4.0_Source源码(http://worldwindcentral.com/wiki/NASA_World_W ...
随机推荐
- BZOJ2215[Poi2011]Conspiracy——2-SAT+tarjan缩点
题目描述 Byteotia的领土被占领了,国王Byteasar正在打算组织秘密抵抗运动.国王需要选一些人来进行这场运动,而这些人被分为两部分:一部分成为同谋者活动在被占领区域,另一部分是后勤组织在未被 ...
- 图之强连通、强连通图、强连通分量 Tarjan算法
原文地址:https://blog.csdn.net/qq_16234613/article/details/77431043 一.解释 在有向图G中,如果两个顶点间至少存在一条互相可达路径,称两个顶 ...
- 洛谷P1973 [NOI2011]Noi嘉年华(动态规划,决策单调性)
洛谷题目传送门 DP题怕是都要大大的脑洞...... 首先,时间那么大没用,直接离散化. 第一问还好.根据题意容易发现,当一堆活动的时间有大量重叠的时候,更好的办法是把它们全部安排到一边去.那么我们转 ...
- Dependency Walker使用说明[转]
在Windows世界中,有无数块活动的大陆,它们都有一个共同的名字——动态链接库.现在就让我们走进这些神奇的活动大陆,找出它们隐藏已久的秘密吧! 初窥门径:Windows的基石 随便打开一个系统目录, ...
- BZOJ 4499: 线性函数
4499: 线性函数 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 177 Solved: 127[Submit][Status][Discuss] ...
- 姿态角(Euler角):yaw pitch roll
姿态角(Euler角):yaw pitch roll
- Linux 系统缓存机制学习
前言:本文为参考他人的文章,是一篇学习记录型博客.理解linux的系统缓存机制有助于理解elasticsearch实时更新的原理. 一.缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲 ...
- Linux中无权限使用sudo
提示:$USER is not in the sudoers file. This incident will be reported. 解决方法: 切换到root用户,su 编辑sudo配置文件,v ...
- c 的内存分配与释放原则: 通常应遵循“谁malloc,谁free”的原则。
通常应遵循“谁malloc,谁free”的原则. ------------------------ 一位大神的话. 2013-02-09
- 常用linux命令(项目部署)
centos 图形 命令行 界面切换 如果在图形界面下,按:Ctrl+Alt+F2进入如下命令行界面 -------------- 看当前目录的路径: pwd ................... ...