最大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来维护答案即可.同时,如果 ...
随机推荐
- 看AppCan移动管理平台如何助力企业移动化
AppCan企业移动管理平台(EMM)是为企业移动化战略提供综合管理的平台产品.AppCan EM移动管理平台为企业提供对用户.应用.设备.内容.邮件的综合管理服务,并在此基础上为企业提供统一应用商店 ...
- 七 Struts2 文件上传和下载
配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC &qu ...
- 随心测试_软测基础_007<软测学习路线建议>
如果你对软测感兴趣,那么如何学习软件测试呢? 贴心小提示:以下内容,仅供参考,不挖坑 1:学习方式_职业教育选择观 ————SX的观点:成本 | 收益说,理性接受 软测产业服务链中,测试工程师重在于& ...
- Command "python setup.py egg_info" failed with error code 1 in C:\Users\w5659\AppData\Local\Temp\pip-install-t7uomu4r\xa dmin\
Error msg: C:\Users\w5659>pip install xadmin Collecting xadmin Using cached https://files.pythonh ...
- jackson把json转换成LIst
把json数据转换成list ObjectMapper mapper = new ObjectMapper(); List<YeWuLuYou> readValue = mapper.r ...
- 使用pycharm进行远程开发部署调试设置 与 远程部署调试是否必须使用远程主机的解释器?
远程开发部署调试目的: 配置pycharm远程部署调试主要用于本地代码与远程服务器上的代码进行同步,使得本地代码经过修改后,可以很容易的同步到远程服务器上.同时设置pycharm的解释器为远程服务器的 ...
- spring 方法验证参数
1:实体使用 @Valid 使用 validation 类注解 2:String 使用 controller 添加 @Validated @NotBlank(message = "i ...
- this.setData , that.setData , this.data.val三者之间的区别和作用
1.this.setData({ }) <view bindtouchmove="tap_drag" bindtouchend="tap_end" bin ...
- Fiddle Proxy
1.抓包原理 Fiddler是类似代理服务器的形式工作,它能够记录所有你的电脑和互联网之间的http(S)通讯,可以查看.修改所有的“进出”的数据.使用代理地址:127.0.0.1, 默认端口:888 ...
- linux 下修改etc/profile文件
etc/profile文件是只读的,直接用vi或gedit打开修改后是无法保存的.要修改profile,需要取得root权限,(使用gedit编辑) 1. su root 输入密码 进入root模 ...