广州官网优化搜索引擎优化包括哪些方面
贪心
为了方便描述,下面将贝茜和埃尔茜分别称为a、b。
已知蛋糕的数量为偶数个,b每次只能吃左右边界上的蛋糕,a每次操作将两个蛋糕变成一个,发现都会使蛋糕的数量减一,且a先操作将蛋糕数量从偶数变成奇数,b将奇数变为偶数,直到最后一次只有一个蛋糕一定是a先吃掉。
由此,如果去掉a第一次操作时的两个蛋糕,考虑从b开始操作,每次都是b吃一个,a吃一个,因此a吃掉的蛋糕数总比b多两个,即 n / 2 + 1。
因此,将a吃掉的蛋糕的总大小的最小值称为Smin,则b吃掉的蛋糕最多为Sum - Smin。
那对于b来说,b一定存在一种选法是的b吃掉的蛋糕大小大于 Sum - Smin,,因为如果a重叠的蛋糕被b给吃掉了,则在b本来的最大方案中原来就要吃掉的蛋糕被吃了,还多吃了a给帮忙的。
所以答案的最优解为 a 吃掉的蛋糕数为 Smin, b为 Sum - Smin
#include <iostream>
#include <cstring>
#include <algorithm>using namespace std;const int N = 500010;
typedef long long LL;LL s[N];int main()
{int T;cin >> T;while(T --){int n;scanf("%d", &n);for(int i = 1;i <= n;i ++ ){int x;scanf("%d", &x);s[i] = s[i - 1] + x;}LL res = 1e15;int l = n / 2 + 1;for(int i = 1;i <= n;i ++){if(i >= l) res = min(res, s[i] - s[i - l]);//找到Smin}printf("%lld %lld\n", res, s[n] - res);}return 0;
}