• hihocoder 1550


    #1550 : 顺序三元组

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    给定一个长度为N的数组A=[A1, A2, ... AN],已知其中每个元素Ai的值都只可能是1, 2或者3。

    请求出有多少下标三元组(i, j, k)满足1 ≤ i < j < k ≤ N且Ai < Aj < Ak。  

    输入

    第一行包含一个整数N  

    第二行包含N个整数A1, A2, ... AN。(1 ≤ Ai ≤ 3)  

    对于30%的数据,1 ≤ N ≤ 100  

    对于80%的数据,1 ≤ N ≤ 1000  

    对于100%的数据,1 ≤ N ≤ 100000  

    输出

    一个整数表示答案

    样例输入
    6
    1 3 2 1 2 3
    样例输出
    3
    思路:前缀和思路搞一搞
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=1e5+10;
    int a[N];
    
    
    int main(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        ll s3=0,s=0,sum=0;;
        for(int i=n;i>=1;i--){
            if(a[i]==3){
                s3++;
            }
            else if(a[i]==2){
                s+=s3;
            }
            else if(a[i]==1){
                sum+=s;
            }
        }
        cout<<sum<<endl;
    }
  • 相关阅读:
    Shell基础一
    Hash表
    哈希表
    设置不输入密码ssh登录
    C++ int与string的转化
    mysql之数据类型
    ICE之C/S通信原理
    mysql基础入门
    SQL练习之不反复执行相同的计算
    SQL练习之求解填字游戏
  • 原文地址:https://www.cnblogs.com/hhxj/p/7357976.html
Copyright © 2020-2023  润新知