codeforces 1555 C. Coin Rows (暴力+前缀和)
Posted _Rikka_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 1555 C. Coin Rows (暴力+前缀和)相关的知识,希望对你有一定的参考价值。
思路:主要注意看一个条件只有两行,且只能向右或向下走,那Alice只有N种移动情况,从第一列就开始下移再往右,先右行至第二列再下移往右,先行至第三列再下移…
而对于每种情况Bob实际上只会从两种情况选一种最大的,一种是只取第一行中Alice没走过的,一种是第二行中Alice没走过的,看下面例子
Alice是蓝色线,Bob贪心之下选的是Max(6,5+2)=7。最后的答案只要把Alice的所有情况都遍历一遍,取所有情况的最小即可(注意用前缀和优化),细节看代码。
#include<iostream>
#include<math.h>
using namespace std;
typedef long long ll;
const int Max = 1e6 + 5;
ll a[Max], b[Max];
int main()
{
int t;cin >> t;
while (t--)
{
int n;cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> a[i];
a[i]+= a[i - 1];
}
for (int i = 1;i <= n;i++)
{
cin >> b[i];
b[i] += b[i - 1];
}
ll mi = 1e16+5;
for (int i = 1;i <= n;i++)
{
mi = min(mi, max(a[n] - a[i], b[i - 1]));
}
cout << mi << endl;
}
}
以上是关于codeforces 1555 C. Coin Rows (暴力+前缀和)的主要内容,如果未能解决你的问题,请参考以下文章
Educational Codeforces112 1555.E. Boring Segments(尺取+线段树)
C. Coin Troubles 有依赖的背包 + 完全背包变形
Codeforces1555 E. Boring Segments(尺取+线段树)