首页 > 其他分享 >acwing 截断数组

acwing 截断数组

时间:2023-02-20 18:57:40浏览次数:52  
标签:int ll long 截断 数组 ans acwing

原题链接

image

题解

分析

  • s数组为前缀和数组,这里边录入边转换
  • 和能平均分为三份,意思是每一段的和都是s[n]/3
  • 先判断一下是否能被整除,分成三段,不能直接输出0,否则进行操作
  • 使用一层for循环进行遍历 ,用来找到两个切入点,等于一倍平均值为第一个点
    等于二倍平均值为第二个点,之所以ans+=count,是因为比如前面有3个点可以切第一刀,那么后面找到第二刀时,就有三种可能性,所以要加上3

代码

#include "iostream"
#define ll long long
const int N = 100010;
int s[N]={0};
using namespace std;
int main(){
    ll n,ans=0;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s[i];
        s[i]+=s[i-1];
    }
    if(s[n]%3)cout<<0;
    else{
        ll ave = s[n] / 3;
        ll count = 0;
        for(int i=1;i<n;i++){
            if(s[i]==ave*2)ans+=count;
            if(s[i]==ave)count++;
        }
        cout<<ans;
    }
    return 0;
}

标签:int,ll,long,截断,数组,ans,acwing
From: https://www.cnblogs.com/ChengMao/p/17138512.html

相关文章

  • acwing 砖块
    原题链接题解分析这道题目使目标字符串变为同一颜色,也就使只有两种情况W/B因为操作时,操作i会将i+1也操作,所以总操作次数为n-1次如果不能变为全黑或全白也就是che......
  • 数组的创建和初始化
    1、数组的创建数组时一组相同类型元素的集合,一维数组格式为:type_t  arr_name [const_n];type_t  arr_name[const_n][const_m];type_t是数组元素类型;const_n/m是常......
  • JavaScript数组的方法大全(最新)
    JavaScript数组方法大全趁着有时间,总结了下数组所有的属性和方法,记录博客,便于后续使用array.at()at方法,用于获取数组中,对应索引位置的值,不能修改。语法:array.at(cou......
  • acwing 318. 划分大理石
      多重背包及优化#include<bits/stdc++.h>usingnamespacestd;constintN=5e5+10;intc[N],S,n,f[N];intsolve(){ inti,j; S=0; memset(f,0,si......
  • acwing 316. 减操作
      类似背包f[i][sum]|=f[i-1][sum-a[i]],这里设置为1或-1 #include<bits/stdc++.h>usingnamespacestd;constintN=2e4+10;constintD=1e4;intn,m......
  • 力扣简977 有序数组的平方
    自己写了一版空间占用太高了看了题解差不多也就这样packageLeetcode;/*给你一个按非递减顺序排序的整数数组nums,*返回每个数字的平方组成的新数组,要求也按......
  • 数组
    数组的定义数组是相同类型数据的有序集合数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成其中,每一个数据称作一个数组元素,每个数组元素可以通过一个......
  • 每日一练(剑指offer)二维数组中的查找
    描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个......
  • AcWing 3956. 截断数组 [前缀和]
    AcWing3956.截断数组[前缀和]原题链接讲解视频思路题意是将一串数字从中间切两刀分成三段。每一段的和都相等。要求这三段每一段的和都相等,那么总和肯定是3的倍数,......
  • 树状数组
    树状数组介绍首先我们需要知道树状数组可以维护一些什么值,树状数组主要维护的值就是区间的前缀和。因此普通的树状数组需要满足结合律和可差分的性质。比如乘法、加法、异......