Cake Game:小清新前缀和题,但是我场上想了半天优先队列贪心假完了 /ll/ll/ll。

观察

本题有三个重要的结论,我们依次进行观察。

不难发现,第二个牛一定会拿 \(\frac{n}{2}-1\) 个蛋糕走。同时它拿走的蛋糕一定是左边一段、右边一段。如果它要使自己的分数最大化,那么显然就是要将左边和右边的和最大化。

那么第一头牛有啥用呢,其实根本没用。一个很显然的结论,第一头牛不可能让第二头牛的分数更小,只能让它大于等于原来的分数。证明也很显然,因为这些蛋糕的分数都是正数,合并任何两个蛋糕只会徒增这两个蛋糕的分数,让第二头牛吃到更多的分。

那么第一头牛能不能不让第二头牛多吃任何蛋糕呢?因为第二头牛最多吃 \(\frac{n}{2}-1\) 个,所以在博弈过程中我们一定可以取一个中点,然后在中点附近合并,防止它吃到合并后的蛋糕。这个可以自行画图理解。

实现

枚举前一段取了多少,前缀和后缀和计算一下取个最大值就好了。

时间复杂度 \(O(n)\)。

赛时忘记取蛋糕有后效性,直接优先队列取两边最大值了。我纯唐。

代码

#include <bits/stdc++.h>
#define fi first
#define se second
#define lc (p<<1)
#define rc ((p<<1)|1)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pi;
int n;
ll a[500005],pre[500005],suf[500005],ans=0;
void solve()
{
ans=0;
memset(pre,0,sizeof(pre));
memset(suf,0,sizeof(suf));
memset(a,0,sizeof(a));
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)pre[i]=pre[i-1]+a[i];
for(int i=n;i>=1;i--)suf[i]=suf[i+1]+a[i];
for(int i=0;i<=n/2-1;i++)
{
int l=i,r=n-(n/2-1-i)+1;
ans=max(ans,pre[l]+suf[r]);
}
cout<<pre[n]-ans<<" "<<ans<<'\n';
}
int main()
{
//freopen("sample.in","r",stdin);
//freopen("sample.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int t;
cin>>t;
while(t--)solve();
return 0;
}

USACO24DEC Cake Game S 题解 [ 黄 ] [ 前缀和 ] [ adhoc ]的更多相关文章

  1. [JZOJ5280]膜法师题解--思维+前缀和

    [JZOJ5280]膜法师题解--思维+前缀和 题目链接 暴 力 过 于

  2. leetcode1546题解【前缀和+贪心】

    leetcode1546.和为目标值的最大数目不重叠非空子数组数目 题目链接 算法 前缀和+贪心 时间复杂度O(n). 1.对nums数组求前缀和: 2.在求前缀和过程中将前缀和sum插入到set集合 ...

  3. leetcode560题解【前缀和+哈希】

    leetcode560.和为K的子数组 题目链接 算法 前缀和+哈希 时间复杂度O(n). 在解决这道题前需要先清楚,一个和为k的子数组即为一对前缀和的差值. 1.我们假设有这么一个子数组[i,j]满 ...

  4. [leetcode/lintcode 题解] 微软 面试题:实现 Trie(前缀树)

    实现一个 Trie,包含 ​insert​, ​search​, 和 ​startsWith​ 这三个方法.   在线评测地址:领扣题库官网     样例 1: 输入:    insert(" ...

  5. Codeforces Round #381 (Div. 2) D. Alyona and a tree 树上二分+前缀和思想

    题目链接: http://codeforces.com/contest/740/problem/D D. Alyona and a tree time limit per test2 secondsm ...

  6. 第七届ACM趣味程序设计竞赛第四场(正式赛) 题解

    Final Pan's prime numbers 题目连接: http://acm.uestc.edu.cn/#/problem/show/1272 题意 给你n,要求你在[4,n]范围内找到一个最 ...

  7. 【hdu6186】CS Course(前缀后缀异或)

    2017ACM/ICPC广西邀请赛 重现赛1005CS Course 题意 给一个数列a,每次询问去掉第p个的与和.或和,异或和. 题解 预处理前缀和.后缀和即可. 但是当时想都没想就写了个线段树.线 ...

  8. HDU 5183 Negative and Positive (NP) 前缀和+哈希

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5183 bc(中文):http://bestcoder.hdu.edu.cn/contests ...

  9. hdu 5480(维护前缀和+思路题)

    Conturbatio Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  10. 「LuoguP2420」 让我们异或吧(树上前缀和

    P2420 让我们异或吧-洛谷 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见.比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor ...

随机推荐

  1. JAVA WEB和Tomcat各组件概念

    概述 本篇文章是https://juejin.cn/post/7055306172265414663,这篇文章的再总结,剔除了与Java安全研究没太大关系的内容,对JAVAWEB中的Servlet.F ...

  2. Python3 print不输出回车符

    Python3 print的函数原型: print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False) objects ---- 输出 ...

  3. manim边做边学--图形的创建与销毁

    上一篇介绍了文字相关的创建和销毁动画,本篇介绍几个用于几何图形的创建和销毁动画效果类. Create:用于在场景中生成一个完整的Mobject(可渲染对象) Uncreate:是Create的逆操作, ...

  4. 关于Pro addin中,控制dockpane的状态

    在Pro SDK中,可以通过dackpane的Hide()方法,对面板进行隐藏. DockPane pane = FrameworkApplication.DockPaneManager.Find(& ...

  5. 从FTP到Feem:文件传输技术的革新

    Feem是一个开源的文件传输协议,旨在提供高效.安全.快速的文件传输服务.与传统的FTP和HTTP协议相比,Feem具有许多优势,如支持任意大小的文件传输.支持实时传输和断点续传等. Feem_v4. ...

  6. 【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术

    转载自 http://www.pengzhihui.xyz/2020/07/02/foc/ 前言前阵子工作太忙,好久没做个人项目了,最近久违地想做一个机器人项目,设计中需要用到高性能超小体积的伺服电机 ...

  7. Java性能最后一个领域:去除垃圾回收器

    Java性能最后一个领域:去除垃圾回收器 不产生垃圾不等于不创建对象,如果对象创建满足以下几个条件,仍然可以在创建对象之后不需要垃圾回收器: 应用程序或者库在初始化的时候生成有限个数的对象,然后不断复 ...

  8. Qt音视频开发34-Onvif时间设置

    一.前言 对设备设置时间很有必要,这个是必备的功能,毕竟大部分的前端设备比如摄像机本身不带BIOS电池的,所以没法存储时间,要么设置了NTP地址来同步时间,要么其他设备主动对他进行设置时间,如果时间不 ...

  9. 《Spring Boot+Vue全栈开发实战-王松2018》一书pdf+源码下载

    下载地址为: 链接:https://pan.baidu.com/s/18lnF2KemQTqkKaCRmMbvXA 提取码:1pie 版权声明:本书版权属于出版社和作者.仅学习使用,请于下载后24小时 ...

  10. [转]export ‘default‘ (imported as ‘Vue‘) was not found in ‘vue

    问题原因:我是安装了最新的vuecli,版本大概是4.5.4,我最开始安装vuecli没有指定版本下面是我出问题的代码,其实就是自己不会用vuecli4. npm install -g @vue/cl ...