原题链接
题目
思路
下图来自借鉴题解:
根据 A 走的路线,只有 蓝色区域或红色区域才是 B 可以取到的数。
就是说 B 只能根据 A 走过的路线来觉得自己走那条路,然后每次走的路肯定都会走最大(蓝色区域和红色区域中大的那一块)的,但是因为有 A 在,他就只能走所有最大的中的最小的。
代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;cin >> t;while (t -- ){
int n;cin >> n;int a[n + 10] = {
0};int b[n + 10] = {
0};for (int i = 1; i <= n; i ++ ) {
int x;cin >> x;a[i] = a[i - 1] + x;}for (int i = 1; i <= n; i ++ ) {
int x;cin >> x;b[i] = b[i - 1] + x;}int ans = 0x3f3f3f3f;for (int i = 1; i <= n; i ++ ){
ans = min (ans, max(a[n] - a[i], b[i - 1]));//B一定会取可以取的最大值,但是A肯定不会让B取到最大值,最终会让B取到所有最大值里的最小值 }cout << ans << endl; }return 0;
}
总结
需要画图去思考,这题看题解写了。
借鉴题解:
-
题解 CF1555C Coin Rows - iMya_nlgau 的博客 - 洛谷博客 (luogu.com.cn)
-
题解 CF1555C Coin Rows - wind_seeker 的博客 - 洛谷博客 (luogu.com.cn)