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

OIFC 2025.11.25 模拟赛总结

生日当天还有模拟赛(

T1 Pocky游戏

题意简述

Mdk 和 Hmr 正在吃 Pocky,她们感到有些无聊,于是决定玩一个小游戏。

现在有一根长度为 \(n\) 的 Pocky,其中从左往右数第 \(i\) 单位长度 Pocky 的美味值为 \(a_i\)。现在 Mdk 和 Hmr 决定吃掉这根 Pocky,Mdk 从左往右吃,Hmr 从右往左吃。

  • Mdk 先开始吃,她会从左侧吃 \(1\)\(2\) 单位长度的 Pocky。

  • 接下来,如果上一个人吃了 \(k\) 单位的 Pocky,则下一个人可以吃 \(k\)\(k + 1\)(如果剩余长度 \(\geq k + 1\))单位的 Pocky。

  • 如果剩下的 Pocky 长度小于 \(k\),则这个游戏将会停止。

双方都想要最大化自己吃掉的 Pocky 的美味值减掉对方吃掉的 Pocky 的美味值,问在双方都使用最优策略的情况下,Mdk 吃掉的 Pocky 的美味值减去 Hmr 吃掉的 Pocky 的美味值将会是多少?

数据范围:\(1 \leq n \leq 4000, |a_i| \leq 10^4\)空间限制:\(256 MB\)

题解

类似博弈论,所以可以直接写 dfs 求解。

具体地,我们令 \(f_{l, r, k}\) 表示两个人分别到了 \(l, r\),且上一个人走到了 \(k\),会得到的结果。转移方程与博弈论模型类似,是 \(\max\) 里面套两个 \(\min\)

这样做,转移是 \(\mathcal{O}(1)\) 的,但状态是 \(\mathcal{O}(n^3)\) 的,需要优化。

注意到 \(k\) 不会很大,因为很快就取完了。具体地,需要满足 \(\frac{k(k + 1)}{2} \leq n\),因此 \(k\) 这一维开到 \(90\) 即可。

另一方面,两个人轮流取数,所以差不会太大。由于每次取 \(k\)\(k + 1\),所以一个回合最多差 \(1\),即总共不会差超过 \(\sqrt{n}\)

这样,状态就优化成 \(n \cdot \sqrt{n} \cdot \sqrt{n}\) 了,可以通过。

参考代码(记搜版):

#include<bits/stdc++.h>
//#define int long long
using namespace std;
inline int read(){int x = 0, f = 1;char ch = getchar();while(!isdigit(ch)){if(ch == '-') f = -1;ch = getchar();}while(isdigit(ch)){x = (x << 1) + (x << 3) + (ch ^ 48);ch = getchar();}return x * f;
}
inline void write(int x){if(x < 0) putchar('-'), x = -x;if(x > 9) write(x / 10);putchar(x % 10 + '0');return;
}
const int _ = 0;
int n, s[4005], val[4005][90][90][2];
bool vis[4005][90][90][2];
inline int dfs(int l, int r, int k, int p){if(vis[l][r - l + 1][k][p]) return val[l][r - l + 1][k][p];int res = ~(0^_^0);if(p == 0)if(r - l + 1 < k)res = 0;else if(r - l + 1 >= k + 1)res = max(dfs(l + k, r, k, 1) + s[l + k - 1] - s[l - 1], dfs(l + k + 1, r, k + 1, 1) + s[l + k] - s[l - 1]);elseres = dfs(l + k, r, k, 1) + s[l + k - 1] - s[l - 1];elseif(r - l + 1 < k)res = 0;else if(r - l + 1 >= k + 1)res = min(dfs(l, r - k, k, 0) - s[r] + s[r - k], dfs(l, r - (k + 1), k + 1, 0) - s[r] + s[r - (k + 1)]);elseres = dfs(l, r - k, k, 0) - s[r] + s[r - k];vis[l][r - l + 1][k][p] = true;return val[l][r - l + 1][k][p] = res;
}
signed main(){freopen("game.in", "r", stdin);freopen("game.out", "w", stdout);n = read();for(int i = 1; i <= n; i++) s[i] = s[i - 1] + read();write(dfs(1, n, 1, 0));return 0;
}
http://www.rkmt.cn/news/60430.html

相关文章:

  • T701793 网络延迟 (latency) 赛后题解
  • RoadRunner与其他PHP服务器相比之优势 - 详解
  • 桂林一对一家教辅导实用测评:2025秀峰、象山等地区辅导机构全维度对比
  • EasyExcel按模板导出excel
  • 2025年钢管表面喷涂处理生产商权威推荐榜单:高效自动喷油设备/全自动喷油生产线/普压自动喷油机源头厂家精选
  • 澳洲线路绕路多成本高:如何选择高质量语音供应商?
  • 2025澳洲留学中介机构排行
  • iOS Universal Link 配置
  • matlab实现图像纹理特征提取
  • LLaMA-Factory 微调模型一
  • 优化脚本
  • 黑白调E3 Pro:以超 300 项专利与顶尖人体工学,重塑玩家竞技体验
  • 广西一对一辅导机构终极评测:贺州、河池、来宾、崇左等地区2025补习机构权威评测优选
  • 篡改猴脚本失效解决办法
  • P4097【模板】李超线段树 / [HEOI2013] Segment 模板
  • 2025 年打包带源头厂家最新推荐榜:ISO 认证 + 日产 20 吨级实力厂商,物流仓储优选权威榜单高亮打包带/塑钢打包带/PP 打包带/PET 打包带/纯新料打包带厂家推荐
  • MATLAB实现光谱数据预处理
  • 告别稀疏发际线!2025值得入手的防脱洗发水推荐,根源防脱告别掉发
  • 1125noip模拟赛
  • 如何通过机器学习(如K-means、SVM、决策树)与深度学习(如CNN、LSTM)模型,进行全球气候变化驱动因素的数据分析与趋势预测 - 详解
  • yymodel 某个属性当iOS以int接受 而接口返回null,json解析会崩溃不
  • 2025年穿线磁珠编带磁环制造企业权威推荐榜单:铁氧体磁环/非晶纳米晶磁环/磁环源头厂家精选
  • 2025年11月中国电线电缆厂家推荐榜单:权威评测与综合排名分析
  • 构建文明的算法:价值原语化、三值纠缠与五维追问——一种AI元人文的实践框架
  • kafka的ISR机制
  • 快速了解Linux中的lsmod命令
  • Windows Server 2022 桌面体验版采用Deployment Center 安装TeamCenter 2506 (上)
  • 2025 最新废气焚烧炉厂家推荐排行榜:聚焦化工医药农药行业,甄选技术创新与合规适配优质企业化工废气焚烧炉/农药废气焚烧炉/医药废气焚烧炉/RTO 废气焚烧炉公司推荐
  • kafka 的ack机制
  • AcWing 788:逆序对的数量 ← 树状数组 + 离散化(数组 + sort + STL map)