链接
A.Yellow Cards: 签到略
B.The Number of Products(dp/思维)
题意: 给给你一个数组,求子区间大于0与小于0的个数
思路: 简单dp,另一种就是先算出负的,然后总的减去负的就是正的,有点巧妙
1.dp
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int mod=1e9+7;
const int N=2e5+5;
int a[N];
ll dp[N][2];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
memset(dp,0,sizeof dp);
//dp[0][0]=dp[0][1]=1;
ll ans0=0,ans1=0;
for(int i=1;i<=n;i++)
{
if(a[i]<0)
{
dp[i][1]=dp[i-1][0];
dp[i][0]=dp[i-1][1]+1;
}
else
{
dp[i][0]=dp[i-1][0];
dp[i][1]=dp[i-1][1]+1;
}
ans0+=dp[i][0];
ans1+=dp[i][1];
}
printf("%lld %lld\n",ans0,ans1);
return 0;
}
#include<stdio.h>
long long n,x,str=1,na=0,po=1;
int main() {
scanf("%lld",&n);
for(