当前位置: 首页 > news >正文

题解:P5504 [JSOI2011] 柠檬

题目:

下面给个经典的 DP 式子不多说了:

\[f_i=f_j+s_iqz^2(s_i,i)+s_iqz^2(s_{j+1},j)-2s_iqz(s_i,i)qz(s_{j+1},j),s_{j+1}=s_i \]

单调栈太阴了!下面有个 hack:

11
2 10 2 2 10 2 2 10 2 2 2
ans:128

众所周知 \(x,k\) 都单调的题我们可以用单调队列维护。
但是这题是上凸包且 \(k\) 递增,手画一下,我们会发现我们实际上决策点是从右端点开始缩。总的看下来是个单调栈。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int QAQ=1e5+7,ovo=1e4+7;
int n,s[QAQ];
vector<int> qz[ovo];
int qzh(int s,int i) {return upper_bound(qz[s].begin(),qz[s].end(),i)-qz[s].begin();}
struct dian {int x,y;} ;
vector<dian> zhan[ovo];
const double inf=1e18;
double xie(dian a,dian b)
{if(a.x==b.x) return (b.y>=a.y)?inf:-inf;return (1.0*b.y-1.0*a.y)/(1.0*b.x-1.0*a.x);
}
int l[ovo],r[QAQ],f[QAQ],ans;
signed main()
{cin>>n;for(int i=1;i<=n;i++) cin>>s[i],qz[s[i]].push_back(i);for(int i=1;i<=10000;i++) zhan[i].push_back({0,0});for(int i=1;i<=n;i++){ int ccx=qzh(s[i],i);int k=2*s[i]*ccx;while(l[s[i]]<r[s[i]]&&xie(zhan[s[i]][r[s[i]]-1],zhan[s[i]][r[s[i]]])<=k)r[s[i]]--;f[i]=s[i]*ccx*ccx+zhan[s[i]][r[s[i]]].y-k*zhan[s[i]][r[s[i]]].x;int swl=qzh(s[i+1],i);dian nw={swl,f[i]+s[i+1]*swl*swl};while(l[s[i+1]]<r[s[i+1]]&&xie(zhan[s[i+1]][r[s[i+1]]-1],zhan[s[i+1]][r[s[i+1]]])<=xie(zhan[s[i+1]][r[s[i+1]]-1],nw))r[s[i+1]]--;++r[s[i+1]];if(zhan[s[i+1]].size()<=r[s[i+1]]) zhan[s[i+1]].push_back(nw);else zhan[s[i+1]][r[s[i+1]]]=nw;ans=max(ans,f[i]);}cout<<ans;return 0;
}
http://www.zskr.cn/news/15749.html

相关文章:

  • 太简单了!原来PS在线抠图可以这么玩,背景分离无压力
  • 深入解析:【Leetcode】随笔
  • DateStyle日期时间字符串序列化 - br
  • 十月四日就听《10월 4일》
  • 赋能制造新质生产力:制造业专用低代码平台选型指南(2025) - 详解
  • 4-7〔O҉S҉C҉P҉ ◈ 研记〕❘ WEB应用攻击▸文件上传漏洞-B - 实践
  • 完整教程:六款智能证照工具盘点,打造个性化“数字身份档案”
  • 深入解析:音频降噪技术:从原理到工具的完整指南(scipy librosa noisereduce soundfile pedalboard)
  • zkSync Era在ETHDenver的技术盛宴:zkEVM与Layer2创新实践
  • 11_linux镜像下载
  • 10_windows11安装virtualbox
  • OpenEuler 25.03 installed UKUI but cant run msedge and chrome
  • 网络调整config.xml的android.mk解析
  • 【Rive】rive-android源码分析
  • 完整教程:基于Spring Boot的爱琴海购物公园网上商城系统的设计与实现
  • 6_什么是知识图谱
  • 面向对象编程(OOP)的三大特性之一(封装、继承、多态)就是第八章聚焦于C++的多态(Polymorphism),这
  • The Brain in Your Toes: Can Tiny Foot Movements Boost BDNF and Sharpen the Mind? - 教程
  • 详细介绍:OpenAI近日推出了一项名为 ChatGPT Pulse 的全新功能
  • 微服务网关深度设计:从Spring Cloud Gateway到Envoy,流量治理与安全认证实战指南 - 指南
  • Python生态最优秀的webapp框架有哪些? - 教程
  • 10 4
  • 详细介绍:LeetCode 391 完美矩形
  • 实用指南:Transformer模型:深度解析自然语言处理的革命性架构——从预训练范式到产业级实践
  • Flutter + Ollama:开启本地AI的全平台新纪元 —— 从零剖析一款现代化AI客户端的技能奥秘
  • 股票资料API接口全解析:从技术原理到多语言实战(含实时行情、MACD、KDJ等技术指标数据与API文档详解)
  • 实用指南:开源 C# 快速开发(十四)进程--内存映射
  • 实用指南:ArcGIS JSAPI 高级教程 - 高亮效果优化之开启使用多高亮样式
  • 10月北京中学集训随笔
  • 使用100%缩放比例重新启动Visual Studio 界面模糊的解决方案