最大K段和题解
题目:XJOI335
传送门 [ >XJOI<]
重要提示:您的膜法等级必须达到3级6段才可使用本传送门,否则您会被小猫痛扁
因为博主太懒,不提供题面(QAQ)...
很容易想到使用DP,设f[i][j]为第i个段,第i-1段以j-1为终点的最大可能和。
于是引出递推式:f[i][j] = max(f[i-1][k]) 其中k枚举且k<j。
然后优化DP,使用一个数组来保存max(f[i-1][k])的值省去枚举。
发现该数组必须使用交替的方式来保证需要的值不被覆盖。
最后一步发现f数组的第一维可以省去,空间不会溢出,得解!
附上一段垃圾代码:
#include <cstdio>
#include <queue>
#include <cstring>
#define ll long long
using namespace std;
ll p[],f[],Max[][];
int main()
{
int n, m, k, i;
scanf("%d %d %d",&n,&m,&k);
for (i=;i<=n;i++)scanf("%lld",&p[i]);
ll max_ans=;
for (i=;i<=k;i++){
int j;Max[][] = ;
for (j=(i-)*m+;j<=(n-m+);j++){
ll tmp = ;
for (int K=;K<m;K++)tmp+=p[j+K];
if (j - m > )f[j]=Max[][j - m]+tmp;else f[j]=tmp;
if (f[j]>Max[][j-]||j==((i-)*m+))Max[][j]=f[j]; else Max[][j]=Max[][j-];
if (i==k&&f[j]>max_ans)max_ans=f[j];
}
memset(Max[],,sizeof(Max[]));
for (j=(i-)*m+;j<=(n-m+);j++)Max[][j]=Max[][j];
}
printf("%lld",max_ans);
return ;
}
别问我为什么要压行,XJ老是拦截(QWQ),我也没办法啊。
最大K段和题解的更多相关文章
- C#版(打败99.28%的提交) - Leetcode 347. Top K Frequent Elements - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- 求区间连续不超过K段的最大和--线段树+大量代码
题目描述: 这是一道数据结构题. 我们拥有一个长度为n的数组a[i]. 我们有m次操作.操作有两种类型: 0 i val:表示我们要把a[i]修改为val; 1 l r k:表示我们要求出区间[l,r ...
- eduCF#61 C. Painting the Fence /// DP 选取k段能覆盖的格数
题目大意: 给定n m 接下来给定m个在n范围内的段的左右端 l r 求选取m-2段 最多能覆盖多少格 #include <bits/stdc++.h> using namespace s ...
- BZOJ3110:[ZJOI2013]K大数查询——题解
+++++++++++++++++++++++++++++++++++++++++++ +本文作者:luyouqi233. + +欢迎访问我的博客:http://www.cnblogs.com/luy ...
- ZOJ 2112 Dynamic Rankings(树状数组套主席树 可修改区间第k小)题解
题意:求区间第k小,节点可修改 思路:如果直接用静态第k小去做,显然我更改一个节点后,后面的树都要改,这个复杂度太高.那么我们想到树状数组思路,树状数组是求前缀和,那么我们可以用树状数组套主席树,求出 ...
- SPOJ COT Count on a tree(树上主席树 + LCA 求点第k小)题解
题意:n个点的树,每个点有权值,问你u~v路径第k小的点的权值是? 思路: 树上主席树就是每个点建一棵权值线段树,具体看JQ博客,LCA用倍增logn求出,具体原理看这里 树上主席树我每个点的存的是点 ...
- HDU 2665 Kth number(主席树静态区间第K大)题解
题意:问你区间第k大是谁 思路:主席树就是可持久化线段树,他是由多个历史版本的权值线段树(不是普通线段树)组成的. 具体可以看q学姐的B站视频 代码: #include<cmath> #i ...
- ACM-ICPC 2018 沈阳赛区网络预赛 Made In Heaven(K短路)题解
思路:K短路裸题 代码: #include<queue> #include<cstring> #include<set> #include<map> # ...
- CodeForces 754D Fedor and coupons ——(k段线段最大交集)
还记得lyf说过k=2的方法,但是推广到k是其他的话有点麻烦.现在这里采取另外一种方法. 先将所有线段按照L进行排序,然后优先队列保存R的值,然后每次用最小的R值,和当前的L来维护答案即可.同时,如果 ...
随机推荐
- css简单的一些基础知识
css层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言.CSS不仅可 ...
- (五)jdk8学习心得之默认方法
五.默认方法 1. 使用方法:写在接口中,就是为了接口可以做一些事情. 2. 目的:有很多实现类,有一个公共的抽象方法,其实这些实现类实现该抽象方法的内容是完全一致的,完全没有必要都重新实现一遍.并且 ...
- 开发工具之Vscode编辑器
Visual Studio Code(以下简称vscode)是一个轻量且强大的代码编辑器,支持Windows,OS X和Linux.内置JavaScript.TypeScript和Node.js支持, ...
- Linux下ansible的group模块
一.概述 group 模块可以帮助我们管理远程主机上的组. 二.常用参数 name参数:必须参数,用于指定要操作的组名称. state参数:用于指定组的状态,两个值可选,present,absent, ...
- 认识 WebService
什么是服务? 1)现在的应用程序变得越来越复杂,甚至只靠单一的应用程序无法完成全部的工作.更别说只使用一种语言了. 2)大家在写应用程序查询数据库时,并没有考虑过为什么可以将查询结果返回给上层的应用 ...
- bugku web web5
JSPFUCK??????答案格式CTF{**} http://123.206.87.240:8002/web5/ 字母大写 jspfuck这不是骂人吗,怎么回事啊? ·点进去看见有一个可以输入的框, ...
- BIZ中model.getSql源码分析
功能:根据model.xml文件中配置的sql,获取对应的动态sql结果. 实例代码:String sql1 = model.getSql(dao.dbMeta());String sql2 = mo ...
- layui table默认选中指定行
表格默认选中行,在回调里写入 done: function (res, curr, count) { tableData = res.data; $("[data-field='id']&q ...
- LOJ#2304 泳池
题意:有一个1001 * n的矩形,每个位置有q的概率为1.求紧贴下边界的最大的全1子矩形面积恰为k的概率.n <= 1e9,k <= 1000. 解:只需考虑每一列最下面一个0的位置. ...
- PTA编译总结求最大值及其下标
代码: #include<stdio.h> int main(void) { int i,index=0,n; int a[10]; scanf(" ...