2021.5.26 3574. 乘积数量

Posted 幽殇默

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021.5.26 3574. 乘积数量相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
题目地址

只需要记录每一个数的正负号即可,求每一个前缀的正号的个数。

#include<cstdio>
#include<iostream>
using namespace std;
typedef long long int LL;
const int N=1e5*2+10;
LL f[N],s[N];// f该位是正,负 s正的个数的前缀和
int main(void)
{
	LL n; cin>>n;
	f[0]=1;
	for(int i=1;i<=n;i++)
	{
		int x; cin>>x;
		if(x<0) f[i]=-f[i-1];
		else f[i]=f[i-1];
	}
	s[0]=1;//初始化  我觉得就是处理自身的情况
	for(int i=1;i<=n;i++)
	{
		if(f[i]>0) s[i]=s[i-1]+1;
		else s[i]=s[i-1];
	}
	LL temp=0;
	LL ans=n*(n-1)/2+n;
	for(int i=1;i<=n;i++)
	{
		if(f[i]>0) temp+=s[i-1];
		else temp+=i-s[i-1];
	}
	cout<<ans-temp<<" "<<temp<<endl;
	return 0;
}
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long int LL;
int main(void)
{
    int n; cin>>n;
    LL ans1=0,ans2=0;
    LL s=1,l=0,r=1;
    while (n -- )
    {
        int x; cin>>x;
        if(x<0) s=-s;
        if(s>0) ans2+=r,ans1+=l,r++;
        else ans2+=l,ans1+=r,l++;
    }
    cout<<ans1<<" "<<ans2<<endl;
    return 0;
}

以上是关于2021.5.26 3574. 乘积数量的主要内容,如果未能解决你的问题,请参考以下文章

什么是在 C++ 中获取总内核数量的跨平台代码片段? [复制]

为啥尽管源代码没有变化,但从一个系统到另一个系统的片段数量却有很大差异?

Cg入门20:Fragment shader - 片段级模型动态变色(实现汽车动态换漆)

Cg入门16:Fragment shader - 片段级光照

教你理解Fragment

Cg入门17:Fragment shader - 片段级光照(添加阴影)