题意:一个正整数序列,\(a[i] < 10^9\),求 \(l\),\(r\),最大化

\[\sum_{i = 1}^{l - 1} a[i] + \prod_{i = l}^r a[i] + \sum_{i = r + 1}^n a[i]
\]

诈骗题。

如果在 \([l, r]\) 间乘积的 \(T\) 中去除一个数 \(x\),对答案的贡献为 $$f(x) = x - T / x$$

若去除任意一个 \(x\) 都不会变优,由于是单增的,则

\[f(10^9) < 0
\]
\[T > 10^{18}
\]

所以一旦整个序列之积 \(> 10^{18}\),\(l\) 即为最左侧 \(> 1\) 的位置,\(r\) 为最右侧 \(> 1\) 的位置。

否则,大于 \(1\) 的数的个数 \(< 60\),枚举左右端点即可。

实际上这个上界远小于 \(10^{18}\),只不过这样更好想且也能轻松通过。

void solve() {
int n; cin >> n;
vector<ll> a(n + 1), sum(n + 1, 0), mul(n + 1, 1);
vector<int> pos;
rep(i, 1, n) cin >> a[i];
rep(i, 1, n) {
if(mul[i - 1] > 1e15 / a[i]) {
int l = 1, r = n ;
while(l < n && a[l] == 1) ++ l;
while(r > 1 && a[r] == 1) -- r;
return cout << l << ' ' << r << '\n', void();
}
if(a[i] > 1) pos.pb(i);
sum[i] = sum[i - 1] + a[i];
mul[i] = mul[i - 1] * a[i];
}
int l = 1, r = 1;
ll ans = 0;
for(int i : pos) {
for(int j : pos) {
if(i <= j) {
if(sum[i - 1] + (mul[j] / mul[i - 1]) + (sum[n] - sum[j]) > ans) {
ans = sum[i - 1] + (mul[j] / mul[i - 1]) + (sum[n] - sum[j]);
l = i;
r = j;
}
}
}
}
cout << l << ' ' << r << '\n';
}

随机推荐

  1. C# ASP.NET MVC 配置 跨域访问

    在web.config文件中的 system.webServer 节点下 增加如下配置        <httpProtocol>             <customHeader ...

  2. springBoot打war包部署tomcat

    1.修改maven的pom.xml文件 <packaging>war</packaging> 2.排除springboot内嵌的tomcat <dependency> ...

  3. HTTPS&SPDY&HTTP2&QUIC&HTTP3

    HTTPS 密钥交换,加密和解密 SPDY&HTTP2 QUIC&HTTP3

  4. NodeJS 实战系列:模块设计与文件分类

    我们从一个最简单的需求开始,来探索我们应该从哪些方面思考模块设计,以及如何将不同的文件分类.之所以说"思考",是因为我在这篇文章里更多的是提供一类解决问题的范式,而非统一的标准答案 ...

  5. Vim 速查表 做记录 便于记忆

    Vim 命令速查表 简体中文 • English 简介:Vim 命令速查表,注释化 vimrc 配置文件,经典 Vim 键盘图,实用 Vim 书籍,Markdown 格式,目录化检索,系统化学习,体系 ...

  6. #平衡树#洛谷 2611 [ZJOI2012]小蓝的好友

    题目 在 \(R\times C\) 的矩形中,问有多少个子矩形使得存在一个给定点在其中, 保证点随机,\(R,C\leq 4\times 10^4,n\leq 10^5\) 分析 考虑容斥,用总方案 ...

  7. #线性基,点分治#洛谷 3292 [SCOI2016]幸运数字

    题目 分析 题目就是将\(x\)到\(y\)路径上的线性基合并求解, 这里用的是点分治,每次换根到重心的时候维护前缀线性基, 查询的时候如果属于不同的子树就能询问答案,记得\(x=y\)要特判 代码 ...

  8. 上传文件附件时判断word、excel、txt等是否含有敏感词如身份证号,手机号等

    上传附件判断word.excel.txt等文档中是否含有敏感词如身份证号,手机号等,其它检测如PDF,图片(OCR)等可以自行扩展. 互联网项目中,展示的数据中不能包含个人信息等敏感信息.判断word ...

  9. Maven 读取pom.xml

    方法一 1.编写配置文件,要读取的内容用@@包裹. spring: application: # @变量名@ 读取pom.xml中的值 version: @project.version@ 2.pom ...

  10. 实战:如何优雅的从 Skywalking 切换到 OpenTelemetry

    背景 最近公司将我们之前使用的链路工具切换为了 OpenTelemetry. 我们的技术栈是: OTLP Client──────────►Collect────────►StartRocks (Ag ...