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

CF201C

最优的方案应该是先往一个方向走,然后走回来,再往另一个方向走不回来。考虑用 dp 模拟这个过程。设 \(f_{i,0/1}\) 表示从第 \(i\) 个点出发往左走,不一定/一定回到 \(i\) 号点的最大次数,则有转移:

\[\begin{array}{l} f_{i,1}=f_{i-1,1}+a_{i-1}-[2 \nmid a_{i-1}]\\f_{i,0}=\max\left\{ \begin{array}{l} f_{i-1,0}+a_{i-1}-[2 \mid a_{i-1}]\\ f_{i-1,1}+a_{i-1}\\ f_{i,1}\\ \end{array} \right. \end{array} \]

转移的意义分别是:

  • \(i\) 出发,把 \(i-1\) 左边走完以后,不停在 \(i-1\)\(i\) 之间移动,最终在 \(i\) 结束。
  • \(i\) 出发,先在 \(i-1\)\(i\) 之间移动,最终到 \(i-1\),走 \(i-1\) 左边的点。
  • \(i\) 出发,把 \(i-1\) 左边走完以后,不停在 \(i-1\)\(i\) 之间移动,最终在两者任意一个结束。
  • 可以回到 \(i\)

同理维护出向右走的最大次数。时间复杂度 \(O(n)\)

#include<iostream>
#include<cstdio>
#define int long long
#define N 100010
using namespace std;
int n,a[N],f[N][2],g[N][2],ans;
signed main(){cin>>n;for(int i=1;i<n;i++)cin>>a[i];for(int i=2;i<=n;i++){if(a[i-1]>1)f[i][1]=f[i-1][1]+a[i-1]/2*2;f[i][0]=max(f[i][1],max(f[i-1][0]+a[i-1]-(a[i-1]%2^1),f[i-1][1]+a[i-1]));}for(int i=n-1;i>=1;i--){if(a[i]>1)g[i][1]=g[i+1][1]+a[i]/2*2;g[i][0]=max(g[i][1],max(g[i+1][0]+a[i]-(a[i]%2^1),g[i+1][1]+a[i]));}for(int i=1;i<=n;i++){ans=max(ans,f[i][0]+g[i][1]);ans=max(ans,f[i][1]+g[i][0]);}cout<<ans;return 0;
}
http://www.rkmt.cn/news/3257.html

相关文章:

  • CF33D
  • 【A】杂题悬桨
  • 基于 Gitlab 实现 Go 的 CI/CD
  • 2025.9.11
  • 如何使用jobleap.cn避免简历中的严重错误
  • 如何用产品思维优化简历的“用户体验”?
  • 实现我的第一个langchain应用
  • React Antd or Antd Pro:findDOMNode is deprecated and will be removed in the next major release.
  • 单板挑战4路YOLOv8!米尔瑞芯微RK3576开发板性能实测
  • 吻得太逼真
  • flink on k8s的基本介绍
  • Transtion动画组件要求包裹元素必须是单一根节点
  • 企业级 AI Agent 开发指南:基于函数计算 FC Sandbox 方案实现类 Chat Coding AI Agent
  • 一招解决Proxmox VE虚拟机磁盘空间耗尽:LVM在线扩容实战 - 若
  • jiaozi
  • Rust太难了。。。。。。。
  • redis实现缓存1-添加商户缓存
  • Springboot 集成 飞书群消息
  • Ubuntu 24.04 LTS 登录用户和密码忘记找回方法
  • cmakelist文件中常见语句的含义
  • STM32读写EEPROM
  • AI革命2025:新一代人力资源管理系统十大标杆产品评测
  • API 响应体加密场景下的调试实践:Postman 的局限与 Apipost 的优化
  • java锁升级过程
  • GAS_Aura-Setting Up Click to Move
  • 【刷题笔记】cf808f
  • C# 操作 DXF 文件指南
  • 玩转n8n测试自动化:核心节点详解与测试实战指南
  • (笔记)多项式基础 FFT
  • MySqlException: Incorrect string value: \xE6\x99\xBA\xE8\x83\xBD... for column FieldName at row 1