汕头市队赛SRM14 T3覆盖

我们可以考虑两种情况 区间之间不相重叠 和 重叠
f【i】【j】表示以当前最后一个区间以 i 结尾 并且选了 j 个区间
不相重叠的话 只要选 1-i-w 的max再加上 包含i在内的前四个数的和
相交的话 考虑因为可选的区间长度是固定的 所以我们可以考虑单调队列优化
sum维护的是前缀和
f【i】【j】=f【k】【j-1】+sum【i】-sum【k】
这样因为sum【i】是固定的 所以我们队列里维护的是f【k】【j-1】-sum【k】就好辣
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=2e4+,inf=0x3f3f3f3f;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,m,l,ans;
int sum[M],w[M],f[][M],mx;
int q[M],ql,qr,k;
int F(int x){return f[k-][x]-sum[x];}
int main(){
freopen("hard.in","r",stdin);
freopen("hard.out","w",stdout);
n=read(); m=read(); l=read();
for(int i=l;i<n+l;++i) w[i]=read();
n=n+*l-;
for(int i=;i<=n;++i) sum[i]=sum[i-]+w[i];
for(int i=;i<l;++i) f[][i]=-inf;
for(int i=l;i<=n;++i) f[][i]=sum[i]-sum[i-l];
for(k=;k<=m;++k){
ql=,qr=;
mx=-inf;
for(int i=;i<l;++i) f[k][i]=-inf;
for(int i=l;i<=n;++i){
while(ql<=qr&&q[ql]<=i-l) ++ql;
while(ql<=qr&&F(q[qr])<=F(i-)) --qr;
q[++qr]=i-;
mx=max(mx,f[k-][i-l]);
f[k][i]=max(mx+sum[i]-sum[i-l],F(q[ql])+sum[i]);
}
}
ans=;
for(int i=;i<=m;++i)
for(int j=l;j<=n;++j) ans=max(ans,f[i][j]);
printf("%d\n",ans);
return ;
}
汕头市队赛SRM14 T3覆盖的更多相关文章
- 汕头市队赛 SRM14 T2 最长上升子序列
最长上升子序列 (tree.pas/c/cpp) 128MB 1s 有一个长度为n的序列a[i],其中1到n的整数各自在a[i]中出现恰好一次. 现在已知另一个等长的序列f[i],表示a[i]中以第i ...
- 汕头市队赛 SRM14 T1 计算几何瞎暴力
计算几何瞎暴力 (easy.pas/c/cpp) 128MB 1s 在平面上,给定起点和终点,有一面墙(看作线段)不能穿过,问从起点走到终点的最短路程. 输入格式 输入一行,包含8个用空格分隔的整数x ...
- 汕头市队赛 SRM13 T3
这道题可以贪心 维护一个答案队列 枚举位置 每次将比当前位置大的队尾全部替代掉 记录删了多少了就好了 #include<cstdio> #include<iostream> # ...
- 汕头市队赛 SRM10 T3 数学上来先打表
数学上来先打表 SRM 10 描述 给出 n个点(不同点之间有区别),求出满足下列条件的连边(双向边)方案:1.每条边连接两个不同的点,每两个点之间至多有一条边2.不存在三个点a,b,c使三个点间两两 ...
- 汕头市队赛 C KMP codeforces B. Image Preview
汕头市队赛题目传送门 codeforces题目传送门 这道题我的做法是 尝试先往左走然后往右走 或者先往右走然后往左走 然后注意一下枚举顺序就okay啦 #include<cstdio> ...
- 汕头市队赛 C SRM 05 - YYL 杯 R1 T3!
C SRM 05 - YYL 杯 R1 背景 tjmak 描述 给一个大小为n的序列V.序列里的元素有正有负.问至少要删除多少个元素使得序列里不存在区间(要求非空)和 >= S.如果答案大于m, ...
- 汕头市队赛SRM 20 T3 灵魂觉醒
背景 自从芽衣.布洛妮娅相继灵魂觉醒之后,琪亚娜坐不住了.自己可是第一个入驻休伯利安号的啊!于是她打算去找德丽莎帮忙,为她安排了灵魂觉醒的相关课程. 第一天,第一节课. “实现灵魂觉醒之前,你需要先将 ...
- 汕头市队赛SRM15
T1——czl SRM 15 众所周知,czl家养了一只可♂爱的***(已屏蔽),那只东西很贪吃,所以czl家很多零食仓库,然而这些仓库里有很多老鼠. 为了心爱的***,czl决定点燃纯艾条,用烟熏老 ...
- 汕头市队赛 SRM16
T3 C-2 SRM 16 描述 给一个数列,给出两种数字, 询问在多少个非空区间中这两种数字出现次数相同. 输入格式 第一行:一个数字n,q,n表示数列长度,q表示q组询问 第二行n个数字表示数列A ...
随机推荐
- 【CSS】多行溢出显示省略号
display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3;//超出三行隐藏 overflow: hidden; ...
- PHP 代码规范、流程规范、git规范
1. 命名规范 (1).变量命名规范 1.变量使用驼峰命名法 禁止使用拼音或者拼音加数字 2.变量也应具有描述性,杜绝一切拼音.或拼音英文混杂的命名方式 3.变量包数字.字母和下划线字符,不允许使用其 ...
- PHP时间日期操作增减(date strtotime) 加一天 加一月
date_default_timezone_set('PRC'); //默认时区 //当前的时间增加5天 $date1 = "2014-11-11"; echo date('Y-m ...
- python web框架的介绍
随着互联网的兴起,web开发变得愈发的重要.Python作为当前火热的语言, 其中的web开发框架可以说是百花齐放,下面聊一聊这些框架. 一: 基于Python的代表性Web框架 Django Dja ...
- Charles Dickens【查尔斯·狄更斯】
Charles Dickens In 1812, the year Charles Dickens was born, there were 66 novels published in Britai ...
- [Bzoj3991]寻宝游戏(dfs序+set)
Description 题目链接 Solution 用set按dfs序维护当前的宝物序列,那么答案为相邻2个点的距离加上头尾2个的距离 Code #include <cstdio> #in ...
- HTML中body相关标签-02
今日内容: 字体标签: h1~h6.<font>.<u>.<b>.<strong><em>.<sup>.<sub> ...
- 途牛banner自动轮播
<!DOCTYPE html> <!--申明文档类型:html--> <html lang="en"> ...
- FTP被动模式服务器端开有限的端口
很多服务器上都搭建的有FTP服务,FTP服务有两种连接模式:主动模式和被动模式.关于这两种模式的介绍,请参考这篇文章:重温FTP的主动模式和被动模式 关于这两种模式的比较,原文有这样的描述: 主动模式 ...
- IIS Express mime type 列表。
C:\Users\Administrator\Documents\IISExpress\config\applicationhost.config -------------------------- ...