首页 > 其他分享 >3956.截断数组

3956.截断数组

时间:2023-02-23 15:12:06浏览次数:60  
标签:int 3956 long 截断 数组 AcWing

AcWing 3956. 截断数组(每日一题) - AcWing

做题有感...

 

 

#include<iostream>
using namespace std;
const int N = 1e5+5;
int n,s[N],temp,cnt=0;
long long ans=0;
int main()
{
    cin>>n;
    for (int i = 1; i <= n; i++)//i初始值为1而非0
    {
        scanf("%d",&temp);
        s[i]=s[i-1]+temp;
    }
    if (s[n]%3 || n < 3 ){//特判(特殊情况判断):当n小于3(第二刀无处切)或者总和不是3的倍数时,方案数为0
        puts("0");
    }
    else{
        for (int i = 2; i < n; i++)//只遍历一遍,而非双for循环(缩小时间复杂度)  |   i从2开始,范围是[2,n),换言之,第二刀的位置应该从第二棵树和第三棵树的间隙开始讨论(植树问题模型)
        {                           //i遍历的是第二刀(第二个切割点)
            if (s[i-1]==s[n]/3) //i-1是用来找第一刀的位置,累加第一刀可行的位置数
            {
                cnt++;
            }
            if (s[i]==s[n]/3*2) // i用来累计第二刀的位置数
            {
                ans+=cnt;//比如已经累计有3个可行的第一刀位置,那么每找到一个可行的第二刀位置,总方案数就是先前的方案数+可行的第一刀位置数
            }
        }
        cout<<ans;
    }
    
    return 0;
}

 

标签:int,3956,long,截断,数组,AcWing
From: https://www.cnblogs.com/shinnyblue/p/17148041.html

相关文章

  • 【JavaScript】26_数组的方法,对象的复制与数组的复制
    4、数组的方法​​https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array​​Array.isArray()用来检查一个对象是否是数组at()可以根据......
  • 【JavaScript】25_数组初步
    1、简介数组(Array)数组也是一种复合数据类型,在数组可以存储多个不同类型的数据数组中存储的是有序的数据,数组中的每个数据都有一个唯一的索引可以通过索引来操作获取数据数......
  • js 给树形(层级)数组添加层级标识
    树形数据,需要给每层的数据添加层级,如下:consttreeData=[{id:1,name:'a',children:[{id:101,name:'a1',children:null}]},{......
  • Java中的数组长度最大值为什么是 Integer.MAX_VALUE - 8
    Java中的数组长度最大值为什么是Integer.MAX_VALUE-8/* 因为数组容量使用int类型数据进行标识, 所以我们认为数组容量MAX是Integer.MAX_VALUE, 但是在编译器中定义......
  • 使数组中小于k的元素相邻的最小交换次数
    packagemainimport("bufio""fmt""math""os""sort""strconv""strings")/*描述:给出数字k,请输出所有结果小于k的整数组合到一起的最小......
  • 西电oj245 成绩统计 结构体数组使用
    #include<stdio.h>structstudent{//定义一个结构体数组 intnum; charname[11]; floatg1; floatg2; floatg3; floataver;};intmain(){ student......
  • 有序数组的平方(双指针)
    题目:给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解......
  • 方法 与 数组
    方法与数组1.方法总结方法中所关注的重点是:传入的参数与返回值的类型2.数组数组基础数组可以存储相同类型的多个元素,但是不能存储不同类型的数据,且存储的......
  • C# json数组排序-根据指定key排序-jsonArray
    //jsonArray.ToJson()是json数组根据指定treatment_no来进行排序json字符串[{"treatment_type":"1","treatment_no":"42",},{"treatment_type":......
  • SafeArray 一维数组解析方法
    //方法2SafeArrayGetElement(SAFEARRAY*psa,long*ailndex,void*pvElem)if(pvDataValues->vt&VT_ARRAY){switch(pvDataValues->vt){......