B. The Number of Products(Codeforces Round #585 (Div. 2))

旧街凉风 提交于 2019-11-30 16:01:56

本题链接:https://codeforces.com/contest/1215/problem/B

题意:给你n长度的数组 然后让你计算乘积为 负的 和 正的 的子串的个数

简单dp推导题

 

一个 a   一个 b   维护正数和负数的字串个数

开始为正时 a++    

如果遇到负号变号     则原先可以组成正数的子串开始组成负数    所以   swap(a,b)  然后让负数的b++

最后再统计  

#include <iostream>
#include<algorithm>
#include<math.h>
#include<string.h>
using namespace std;
int main()
{
    int a=0,b=0,ansa=0,ansb=0;
    int n,x;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>x;
        if(x>0)
        {
            a++;
        }
        else
        {
            swap(a,b);
            b++;
        }
        ansa+=a;
        ansb+=b;
    }
    cout<<ansa<<" "<<ansb<<endl;
    return 0;
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!