Codeforces Round #640 (Div. 4) D. Alice, Bob and Candies
Codeforces Round #640 (Div. 4)
翻译 岛田小雅
D. Alice, Bob and Candies
出题人 MikeMirzayanov
Alice 和 Bob 在一个既有趣又美味的游戏:他们按照排列顺序吃糖。Alice 从左边开始吃,Bob 从右边开始吃。所有的糖被吃完时,游戏结束。
他们是轮流行动的。在一次行动中,轮到的玩家吃掉 TA 应该吃掉的糖果。
Alice 先手,第一次行动,她吃掉左边的
每次行动,当前回合玩家在吃每颗糖前会计算 TA 本轮已经吃掉的糖果的总体积。如果 TA 已经吃掉的糖果总体积严格大于另外一个人的,那 TA 就结束行动。换句话说,每次行动的玩家都会吃尽量少的糖让自己这次吃掉的总体积严格大于另一个玩家上次行动时吃掉的的总体积。如果糖果不足,就吃掉剩下的所有糖果。
举个例子,如果
- 行动
:Alice 吃掉左边第一颗体积为 的糖果,数组变成 。 - 行动
:Alice 上一轮吃掉的糖果体积是 ,Bob 本轮吃掉大于等于 体积的糖果才能结束行动。Bob 这次行动吃掉最右边的一颗体积为 的糖果,这样数组变成 。 - 行动
:Bob 上一轮吃掉了 体积糖果,那 Alice 本轮就要吃掉 体积或更多。她吃掉左边的 颗糖果,体积为 ,数组变成 。 - 行动
:Alice 上一轮吃掉了 体积糖果,那 Bob 本轮就要吃掉 7 体积或更多。他吃掉右边的 颗糖果,体积为 ,数组变成 。 - 行动
:Bob 上一轮吃掉了 体积的糖果,那 Alice 这一回合要吃掉 体积或更多。她吃掉右边的 颗糖果,体积为 ,数组变成 。 - 行动
(最终行动):Alice 上一轮吃掉了 体积的糖果,而剩下的糖果总体积为 ,小于 ,所以 Bob 吃掉剩下所有的糖果,游戏结束。
输出游戏的轮数和两个数字:
- 数字
表示在游戏过程中 Alice 吃掉的所有糖果的体积。 - 数字
表示在游戏过程中 Bob 吃掉的所有糖果的体积。
输入格式
第一行是一个整型
每一个测试点包括两行,第一行是一个整型
数据保证
输出格式
对每个测试点输出一行
样例
输入
7
11
3 1 4 1 5 9 2 6 5 3 5
1
1000
3
1 1 1
13
1 2 3 4 5 6 7 8 9 10 11 12 13
2
2 1
6
1 1 1 1 1 1
7
1 1 1 1 1 1 1
输出
6 23 21
1 1000 0
2 1 2
6 45 46
2 2 1
3 4 2
4 4 3
题解
作者 岛田小雅
这题为什么能有 1300 分我不理解。
详情见 AC 代码。
AC 代码
作者 岛田小雅
#include <bits/stdc++.h>
using namespace std;
int t, n, sum;
int last, alice, bob, rounds, ate;
bool turn; // false轮到bob,true轮到alice
int main()
{
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> t;
while(t--)
{
deque<int> q;
sum = alice = bob = rounds = 0;
cin >> n;
for(int i = 1; i <= n; i++)
{
int tmp;
cin >> tmp;
sum += tmp;
q.push_back(tmp);
}
rounds++;
ate = q.front();
sum -= q.front();
q.pop_front();
last = ate;
alice += ate;
turn = false;
while(!q.empty())
{
rounds++;
ate = 0;
if(sum <= last)
{
ate = sum;
sum = 0;
q.clear();
}
else while(ate <= last)
{
if(turn)
{
ate += q.front();
sum -= q.front();
q.pop_front();
}
else
{
ate += q.back();
sum -= q.back();
q.pop_back();
}
}
last = ate;
if(turn) alice += ate;
else bob += ate;
turn = !turn;
}
cout << rounds << ' ' << alice << ' ' << bob << '\n';
}
return 0;
}
作者:岛田小雅
出处:https://www.cnblogs.com/CasseShimada/p/16723837.html
版权:本作品采用「CC BY-NC-SA 4.0」许可协议进行许可。
(。・∀・)ノ゙嗨, 感谢你阅读我的博客。博主是个初来乍到的萌新,如有意见和建议欢迎私信提出嗷!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】