题目
Shirotsume 来到了回转寿司店。从现在开始,Shirotsume 所在的柜台会依次放上N盘寿司。第 盘出现的寿司的美味度为 。
Shirotsume 决定拿起自己喜欢的寿司吃,但也考虑到其他客人的感受,决定不拿连续的 盘 及 盘以上的寿司。
请求出 Shirotsume 所吃的寿司的美味值的总和的最大值。
限制:
算法分析
原题等价于求 Shirotsume 不吃的寿司的美味值总和的最小值 。那么,答案就是所有寿司的美味值总和减去 。
记 dp[i]
表示在前 个寿司中,决定不吃第 个寿司时,不吃的寿司的美味值总和的最小值
由于不能吃连续的超过 盘的寿司,所以转移方程为
暴力的时间复杂度为 ,可以用线段树将转移复杂度降为
代码实现
#include <bits/stdc++.h> #if __has_include(<atcoder/all>) #include <atcoder/all> using namespace atcoder; #endif #define rep(i, n) for (int i = 0; i < (n); ++i) using namespace std; using ll = long long; ll op(ll a, ll b) { return min(a, b); } ll e() { return 1e18; } int main() { int n, k; cin >> n >> k; vector<int> a(n); rep(i, n) cin >> a[i]; ll ans = 0; rep(i, n) ans += a[i]; segtree<ll, op, e> t(n); rep(i, k) t.set(i, a[i]); for (int i = k; i < n; ++i) { ll now = t.prod(i-k, i)+a[i]; t.set(i, now); } ans -= t.prod(n-k, n); cout << ans << '\n'; return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现