题目描述

233233

[ 233 ]

( 233 )

KikokKikok 得到了一块比萨,他迫不及待地想与妹妹 Kik子和 koko美一同享用它。

比萨是一种圆形的食物。为了将它分给三个人,Kikok 需要沿着半径方向切三刀。可是,由于这个比萨太硬了,Kikok只能沿着划好的刀痕把它切开。比萨上一开始有 nn 条刀痕,沿顺时针将它们按照从 1 到 n 的顺序标号

当 11≤i≤n 时,第 i 条刀痕与第 i+1 条刀痕之间的部分大小为 a_i​;第 n 条与第 1 条刀痕之间的部分大小为 a_na

因为怕妹妹们哭闹,在比萨分成三块后,Kikok准备让妹妹们拿较大的两块,自己拿最小的一块

可是,Kiko 实在太喜欢比萨了,他想吃地尽可能多,也就是让切出的比萨中最小的一块尽可能地更大。那么,Kikok 最多能吃到多少比萨呢?

输入格式

输入文件第一行包含一个整数 n,表示比萨上刀痕的数量。

接下来 n 行,其中第 i 行包含一个整数 a_i,依次表示相邻两条刀痕之间的部分的大小。

输出格式

输出一行一个整数,表示最小的一块比萨的最大大小。

样例

Input 1:

6
1 5 4 5 2 4

Output 1:

6
提示与说明

在 11 号、33 号和 55 号刀痕处切开时取得最优解。

对于 10%的数据,n≤100。

对于 30%的数据,n≤400。

对于 60%的数据,n≤8000。

对于 100%的数据,3≤n≤100000, 1≤ai≤1000000000。

-----------------------------------------------------------------------------

把圆拆成条

其中的一个特殊块

是两头块的加和

用3个指针

边遍历,边找最小块的最大值

于是就出来了

#include<cstdio>
#include<iostream>
#define maxn 100010
using namespace std;
long long n,a[maxn],minn,sum[maxn];
int main()
{
scanf("%lld",&n);
for(int i=; i<=n; i++)
{
scanf("%lld",&a[i]);
sum[i]=sum[i-]+a[i];
}
int t1=,t2=,t3=;
for(int i=; i<=*n; i++)
{
if(t2>t3) swap(t2,t3);
if(t1>t2) swap(t1,t2);
long long ans1=sum[t2]-sum[t1];
long long ans2=sum[t3]-sum[t2];
long long ans3=sum[n]-sum[t3]+sum[t1];
long long pp=min(ans1,min(ans2,ans3));
if(pp>minn) minn=pp;
if(pp==ans2)
{
t3++;
if(t3>n) t3=;
}
else if(pp==ans1)
{
t2++;
if(t2>n) t2=;
}
else if(pp==ans3)
{
t1++;
if(t1>n) t1=;
}
}
printf("%lld",minn);
return ;
}

模拟祭-比萨-题解O(n)的更多相关文章

  1. 一些noip模拟题一句话题解

    Problem A: 序列 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 12  Solved: 9[Submit][Status][Web Boar ...

  2. 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解

    今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...

  3. csps模拟87888990部分题解

    题面:https://www.cnblogs.com/Juve/articles/11752338.html https://www.cnblogs.com/Juve/articles/1175241 ...

  4. 【DP】【构造】NOIp模拟题 演讲 题解

        极其考思维的好题 题目背景 众所周知,$\mathrm{Zdrcl}$是一名天天$\mathrm{AK}$的高水平选手. 作为一民长者,为了向大家讲述自己$\mathrm{AK}$的经验,他决 ...

  5. PAT甲级 模拟题_C++题解

    模拟题 PAT (Advanced Level) Practice 模拟题 目录 1008 Elevator (20) 1042 Shuffling Machine (20) 1046 Shortes ...

  6. CSP-S 模拟测试94题解

    T1 yuuustu: 可以对两边取对数,然后就转化为两个double的比较,时间复杂度$O(n)$ 然后我就用神奇0.4骗分水过 #include<bits/stdc++.h> usin ...

  7. CSP-S模拟测试 88 题解

    T1 queue: 考场写出dp柿子后觉得很斜率优化,然后因为理解错了题觉得斜率优化完全不可做,只打了暴力. 实际上他是可以乱序的,所以直接sort,正确性比较显然,贪心可证,然后就是个sb斜率优化d ...

  8. CSP-S 模拟测试92 题解

    话说我怎么觉得我没咕多长时间啊,怎么就又落了20多场题解啊 T1 array: 根据题意不难列出二元一次方程,于是可以用exgcd求解,然而还有一个限制条件就是$abs(x)+abs(y)$最小,这好 ...

  9. CSP-S 模拟测试57题解

    人生第一次A,B层一块考rank2,虽然说分差没几分,但还是值得纪念. 题解: T1 天空龙: 大神题,因为我从不写快读也没有写考场注释的习惯,所以不会做,全hzoi就kx会做,kx真大神级人物. T ...

随机推荐

  1. es6 语法 (iterator和for...of循环)

    Iterator遍历器 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据 ...

  2. BZOJ4407: 于神之怒加强版(莫比乌斯反演 线性筛)

    Description 给下N,M,K.求 感觉好迷茫啊,很多变换看的一脸懵逼却又不知道去哪里学.一道题做一上午也是没谁了,, 首先按照套路反演化到最后应该是这个式子 $$ans = \sum_{d ...

  3. vivo怎么录屏 手机录制屏幕详细教程

    在手机上我们经常可以刷到许多类似于手机游戏之类的屏幕视频我想肯定会有很多人好奇怎么录制的,今天小编所说的便是教大家如何在安卓手机上进行屏幕录像,下面便是关于vivo怎么录屏的具体操作方法,希望能对你们 ...

  4. 转载------35岁开始转变的观念(干了这碗鸡汤再写代码保证没有bug)

    作为一个标准的IT男,从一开始的一线开发,做到管理层,又因为喜爱开发,跳槽继续专注coding,一干就是10多年.有时候就想,这样一直学习,coding,如果能干到老也挺不错的! 不过生活的压力是不会 ...

  5. Android图片的Base64编码与解码

    Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法. Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较 ...

  6. Android studio 下的SDK Manager只显示已安装包的情况

    原因是连接不上Google的更新服务器: 解决方法: 选择第三个Options: 修改Http Proxy Server: mirrors.neusoft.edu.cn Http Proxy Port ...

  7. 手动编译websocket-sharp项目使其支持.net core

    以前项目中使用了websocket-sharp,挺好用.可惜,不支持.net core.好在手动编译很顺利: 从github下载源代码 创建dotnet core的类库,复制代码后并编译即可 dotn ...

  8. Testlink1.9.17使用方法(第五章 测试用例管理)

    第五章 测试用例管理 QQ交流群:585499566 TestLink支持的测试用例的管理包含二层:分别为新建测试用例集(Test Suites).创建测试用例(Test Cases).可以把测试用例 ...

  9. 你不可不知的Java引用类型【总结篇】

    四种引用类型总结 引用级别:强引用 > 软引用 > 弱引用 > 虚引用 理解 就如最开始说的,设置四种引用类型,是为了更好的控制对象的生命周期,让代码能够一定程度上干涉GC过程,所以 ...

  10. 算法: 包含min函数的栈

    * @Description 包含min函数的栈* @问题:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)).* @思路: 1:Stack 类中的p ...