题解:AT_arc168_a [ARC168A] <Inversion>

### 题目分析

首先我们可以知道,这道题其实就是由逆序对演变而来的。以此类推,我们可以发现,当一个位置是小于号时,我们就需要加一,也就是当前连续不间断地小于号个数。而当当前位置是一个大于号的时候,我们就需要统计答案了。$n$也就是当前位置连续不间断地小于号个数。
 

#include<bits/stdc++.h>
#define int long long                //记得开long long(ll) 
#define wh(x) write(x),putchar('\n')
#define A printf("Aoki")
#define T printf("Takahashi")

using namespace std;
char a;
int n,m,k,jk,sum,num,ans;

void read(int &x)
{
    x=0;int ff=1;char ty;
    ty=getchar();
    while(!(ty>='0'&&ty<='9'))
    {
        if(ty=='-') ff=-1;
        ty=getchar();
    }
    while(ty>='0'&&ty<='9')
    x=(x<<3)+(x<<1)+ty-'0',ty=getchar();
    x*=ff;return;
}

void write(int x)
{
    if(x==0){
        putchar('0');return;
    }
    if(x<0){
        x=-x;putchar('-');
    }
    char asd[201];int ip=0;
    while(x) asd[++ip]=x%10+'0',x/=10;
    for(int i=ip;i>=1;i--) putchar(asd[i]);
    return;
}

signed main()                              //用了 #define 就要用signed了 
{
    read(n);
    for(int i=1;i<=n;i++)                  //字符串长度 
    {
        scanf("%c",&a);                    //其实可以每次只输入一个字符 
        if(a=='>') sum++;                  //当条件成立时,个数加一 
        else ans+=(sum*(sum+1))/2,sum=0;   //不成立的话加上方案数 
    }
    return wh(ans),0;                      //输出ans并结束等于wh(ans);return 0; 
    return 0;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值