ARC100 D - Equal Cut

Description: 给出长度为n的序列A,把这个序列分成连续的四段,最小化极差。

\(4≤n≤2×10^5,4≤n≤2×10^5\)

Solution:枚举中间的分割点,左右二分出极差最小的位置更新答案。
code:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
const int MAXX=200010;
long long a[MAXX];
long long sum[MAXX];
int n;
long long ans=0x3f3f3f3f;
long long minnn1=0x3f3f3f3f;
long long maxxx1=0;
long long minnn2=0x3f3f3f3f;
long long maxxx2=0;
inline void solve(int L,int R,int v){
int l=L;
int r=R;
if(l>r)return ;
while(l+1<r){
int mid=(l+r)>>1;
if(sum[mid]-sum[L-1]>(sum[R]-sum[mid]))r=mid;
else l=mid;
}
if(v==1){
if(abs(sum[l]-sum[L-1]-(sum[R]-sum[l]))<abs(sum[r]-sum[L-1]-(sum[R]-sum[r]))){
minnn1=min(sum[l]-sum[L-1],sum[R]-sum[l]);
maxxx1=max(sum[l]-sum[L-1],sum[R]-sum[l]);
}
else {
minnn1=min(sum[r]-sum[L-1],sum[R]-sum[r]);
maxxx1=max(sum[r]-sum[L-1],sum[R]-sum[r]);
}
}
else {
if(abs(sum[l]-sum[L-1]-(sum[R]-sum[l]))<abs(sum[r]-sum[L-1]-(sum[R]-sum[r]))){
minnn2=min(sum[l]-sum[L-1],sum[R]-sum[l]);
maxxx2=max(sum[l]-sum[L-1],sum[R]-sum[l]);
}
else {
minnn2=min(sum[r]-sum[L-1],sum[R]-sum[r]);
maxxx2=max(sum[r]-sum[L-1],sum[R]-sum[r]);
}
}
}
int main(){
scanf("%d",&n);
for(int i=1;i<=n;++i){
cin>>a[i];
sum[i]=sum[i-1]+a[i];
}
for(int i=1;i<=n;++i){
if(i<2||n-i<2)continue;
minnn1=0x3f3f3f3f;
maxxx1=0;
minnn2=0x3f3f3f3f;
maxxx2=0;
solve(1,i,1);
solve(i+1,n,0);
ans=min(max(maxxx1,max(maxxx2,max(minnn1,minnn2)))-min(maxxx2,(min(maxxx1,min(minnn1,minnn2)))),ans);
}
cout<<ans;
return 0;
}

ATcoderARC100D Equal Cut的更多相关文章

  1. AtCoder Regular Contest 100 Equal Cut

    Equal Cut 思路: 枚举中间那个分界点,然后两边找使得切割后差值最小的点,这个可以用双指针 代码: #include<bits/stdc++.h> using namespace ...

  2. Equal Cut

    Equal Cut 题目描述 Snuke has an integer sequence A of length N. He will make three cuts in A and divide ...

  3. AtCoder Regular Contest 100 (ARC100) D - Equal Cut 二分

    原文链接https://www.cnblogs.com/zhouzhendong/p/9251420.html 题目传送门 - ARC100D 题意 给你一个长度为 $n$ 的数列,请切 $3$ 刀, ...

  4. ARC-100 D - Equal Cut

    题面在这里! 我们枚举一下第2和第3段的分界点,显然这种情况下 第1与第2  和  第3与第4  之间的分界点都只有两种情况可能最优,吧这四种情况讨论一下就好了. 两边的分界点可以单调扫过去... # ...

  5. ARC100D Equal Cut

    传送门 分析 首先我们想到的肯定是n^3暴力枚举,但这显然不行.然后我们想到的就是二分了,但这题没有什么单调性,所以二分也不行.这时候我就想到了先枚举找出p2的位置再在它的左右两边找到p1和p3,但是 ...

  6. Hdu 3363 Ice-sugar Gourd(对称,圆)

    Ice-sugar Gourd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  7. 【AtCoder】ARC100 题解

    C - Linear Approximation 找出\(A_i - i\)的中位数作为\(b\)即可 题解 #include <iostream> #include <cstrin ...

  8. Hdu3363 Ice-sugar Gourd 2017-01-16 11:39 43人阅读 评论(0) 收藏

    Ice-sugar Gourd Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  9. AtCoder Beginner Contest 102

    A - Multiple of 2 and N Time Limit: 2 sec / Memory Limit: 1024 MB Score : 100100 points Problem Stat ...

随机推荐

  1. 2018年湘潭大学程序设计竞赛 Fibonacci进制

    Fibonacci数是非常有名的一个数列,它的公式为 f(n)=f(n-1)+f(n-2),f(0)=1,f(1)=2.  我们可以把任意一个数x表示成若干不相同的Fibonacci数的和, 比如说1 ...

  2. Mac上vmware虚拟机Windows10安装JDK8及配置环境

    1.jdk8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.双击下载的jdk进行安装 3.安装成功之 ...

  3. 手把手教你进行R语言的安装及安装过程中相关问题解决方案

    这篇文章旨在为R语言的新手铺砖引路,行文相对基础,希望对在R语言安装上有问题的小伙伴提供帮助和指引.一.什么是 R 语言R 编程语言被广泛应用在统计科学和商业领域. 在各种编程语言排名中 R 语言的排 ...

  4. 旧机器安装ArchLinux的各种问题

    昨天突然想到家里还有一台很早之前不用的计算机 于是打算安装一个linux,开学再拿到宿舍用来写代码,怎么说台式机显示屏也比笔记本的大 机器安装问题 屏幕机箱擦干净,该连的东西都连上,然后插电源,本以为 ...

  5. HDU 5068 Harry And Math Teacher 线段树+矩阵乘法

    题意: 一栋楼有n层,每一层有2个门,每层的两个门和下一层之间的两个门之间各有一条路(共4条). 有两种操作: 0 x y : 输出第x层到第y层的路径数量. 1 x y z : 改变第x层 的 y门 ...

  6. Java代码规范文档

    NOTE:以下部分为一个简要的编码规范,更多规范请参考 ORACLE 官方文档. 地址:http://www.oracle.com/technetwork/java/codeconventions-1 ...

  7. struts2文件过滤拦截器fileUpload以及各种文件类型

    本文某些内容复制自:http://zhidao.baidu.com/link?url=F0Z-FqbZ83BOj_xXp_B8rgJDzUoeVSWGgXwPNP5fEdLU1nvBK7yO4vnX_ ...

  8. leetcode笔记:Range Sum Query - Mutable

    一. 题目描写叙述 Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), ...

  9. 为什么选择Sqoop1

    1)大部分企业还在使用sqoop1版本 2)sqoop1能满足公司的基本需求 3)sqoop2 功能还不是很成熟和完善 4)sqoop只是一个工具而已,相对比较简单

  10. 解决电信或网通的DNS劫持

    大家有没有碰到访问一些不存在域名或者网站时,浏览器本应显示一个网址不存在之类的信息,但是因为现在很多ISP做了DNS劫持将不存在的域名或网址重定向到ISP的广告页面,烦人的狠.其实tomato可以解决 ...