博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P1714 切蛋糕
阅读量:5917 次
发布时间:2019-06-19

本文共 1059 字,大约阅读时间需要 3 分钟。

数据结构优化dp是最骚的。。。

看到区间和,常用的技巧就是前缀和了。所以我们弄出一个前缀和数组b。

那么这个答案就能转化为\(max(a_i - a_j)\)

我们每一次就只枚举i,那么这个max可以把\(a_i\)拿出来,也就是\(a_i - min(a_j)\)

所以转换为区间最小值。直接转化为RMQ问题,使用ST表即可。

代码:

#include
#include
const int maxn = 500005;int a[maxn], n, m;int st[maxn][21];int ans = -0x3f3f3f3f;int query(int l, int r){ int k = 0; while((1 << (k + 1)) <= r - l + 1) k++; return std::min(st[l][k], st[r - (1 << k) + 1][k]);}int main(){ scanf("%d%d", &n, &m); for(int i = 1; i <= n; i++) scanf("%d", &a[i]); for(int i = 1; i <= n; i++) a[i] += a[i - 1]; for(int i = 1; i <= n; i++) st[i][0] = a[i]; for(int j = 1; j <= 20; j++) { for(int i = 1; i + (1 << j) - 1 <= n; i++) { st[i][j] = std::min(st[i][j - 1], st[i + (1 << (j - 1))][j - 1]); } } for(int i = 1; i <= n; i++) { int l = i - m; if(l < 0) l = 0; int temp = query(l, i); ans = std::max(ans, a[i] - temp); } printf("%d\n", ans); return 0;}

转载于:https://www.cnblogs.com/Garen-Wang/p/9815815.html

你可能感兴趣的文章
Nginx面试中最常见的18道题 抱佛脚必备
查看>>
FBI端掉Dridex僵尸网络,拘捕了嫌疑人
查看>>
美团数据库运维自动化系统构建之路
查看>>
可以使你成为更优秀程序员的5个好习惯
查看>>
惊!莫让远程管理软件为僵尸网络做贡献
查看>>
不再过度强调全闪性能,SolidFire眼中的新一代数据中心是啥样
查看>>
众多玩家进入智能服装研发,内衣袜子开始变得与众不同
查看>>
美国国土安全部部长约翰逊就Dyn网络攻击事件发表声明
查看>>
想在Windows 10中运行openSUSE?请参照此安装方法
查看>>
英特尔物联网的未来:以市场需求定义产品
查看>>
《Java程序设计习题精析与实验指导》一2.3 实验指导
查看>>
信息泄露,那些央视没报的“内鬼"
查看>>
中国光伏企业加快英国市场布局
查看>>
卡巴斯基面向工业控制系统推Industrial CyberSecurity
查看>>
从 Kaggle 困局,看国内数据竞赛平台如何突围
查看>>
云计算的下半场:详解三大运营商云计算最新策略
查看>>
互联网风控技术SaaS服务平台聚信立获1亿元B轮融资
查看>>
一文详解高斯混合模型(GMM)在图像处理中的应用(附代码)
查看>>
IBM 用机器学习寻找外星人,不用再望穿银河秋水
查看>>
微软为何不公布商店应用数量?可能是没脸说
查看>>