hoj 2275 Number sequence

hoj 2275 Number sequence

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

Number sequence

Given a number sequence which has N element(s), please calculate the number of different collocation for three number Ai, Aj, Ak, which satisfy that Ai < Aj > Ak and i < j < k.


Input


The first line is an integer N (N <= 50000). The second line contains N integer(s): A1, A2, …, An(0 <= Ai <= 32768).


Output

There is only one number, which is the the number of different collocation.

Sample Input


5
1 2 3 4 1


Sample Output


6

题目就是统计序列中Ai < Aj > Ak(i < j < k)的个数。能够从前往后统计每一个元素之前小于它的数的个数,在从后往前统计每一个元素之后小于它的数的个数。然后乘积加和就可以。用树状数组轻松搞定!


AC代码例如以下:


#include<iostream>
#include<cstdio>
#include<cstring>
#define M 50010
using namespace std;

int c[M],num[M];
int l[M],n;

int lowbit(int a)
{
    return a&-a;
}

void add(int a,int b)
{
    while (a<M)
    {
        c[a]+=b;
        a+=lowbit (a);
    }
}

int sum(int a)
{
    int ans=0;
    while(a>0)
    {
        ans+=c[a];
        a-=lowbit(a);
    }
    return ans;
}

int main ()
{
    int i,j;
    int a,b;
    while(~scanf("%d",&n))
    {
        memset(c,0,sizeof c);
        memset(num,0,sizeof num);
        for(i=1;i<=n;i++)
        {
            scanf("%d",&num[i]);
            l[i]=sum(num[i]-1);
            add(num[i],1);
        }
        memset(c,0,sizeof c);
        long long ans=0;
        for(i=n;i>=1;i--)
        {
            ans=ans+(long long)sum(num[i]-1)*l[i];
            add(num[i],1);
        }
        printf("%lld\n",ans);
    }
    return 0;
}



版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117267.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • adb命令 利用jks文件给apk签名[通俗易懂]

    adb命令 利用jks文件给apk签名[通俗易懂]程序猿日常实践是检验真理的唯一标准。jarsigner-verbose-keystorexxx.jks-signedjarxxx.apk(签名后的apk名字)xxx.apk(需要签名的apk)xxx(keystore别名)

    2022年5月30日
    35
  • 拉格朗日乘数法_拉格朗日乘数法是求边界点吗

    拉格朗日乘数法_拉格朗日乘数法是求边界点吗原文地址:https://www.cnblogs.com/maybe2030/p/4946256.html阅读目录1.拉格朗日乘数法的基本思想 2.数学实例 3.拉格朗日乘数法的基本形态 4.拉格朗日乘数法与KKT条件   拉格朗日乘数法(LagrangeMultiplierMethod)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,…

    2025年8月21日
    2
  • 看过spring源码吗_thinkphp源码分析

    看过spring源码吗_thinkphp源码分析概述

    2022年8月12日
    8
  • 手把手教你用 c++ 做 图书管理系统「建议收藏」

    手把手教你用 c++ 做 图书管理系统「建议收藏」图书管理系统设计题目要求思路分析各个模块的实现“书”类的创建管理模块的创建及实现管理权限添加图书查找图书修改图书删除图书销售模块的创建与实现统计模块的创建与实现创建简易登录界面文件的读取与存储题目要求1、问题描述:定义图书类,属性有:书名、出版社、ISBN号、作者、库存量、价格等信息和相关的对属性做操作的行为。主要完成对图书的销售、统计和图书的简单管理。2、功能要求(1)销售功能:购买书籍时,输入相应的ISBN号,并在书库中查找该书的相关信息。如果有库存量,输入购买的册数,进行相应

    2022年6月3日
    37
  • 毕业设计 – 题目:基于stm32的智能扫地机器人设计与实现

    1课题背景随着人口老龄化的到来和人民对提升生活品质的需要,人们对在现实生活场景中取代人力的服务机器人有着迫切的需要。同时,机电、自动控制、计算机、传感器等技术的发展也为制造服务机器人提供了技术支持。扫地机器人是服务机器人中技术最成熟和最为广泛使用的机器人。它可以自动的在室内行走,通过刷扫和吸尘将地面上的碎屑吸收进垃圾收集装置中,完成清洁地面的任务,有效的减少了人们清洁地面这种简单重复的家务劳动,节约了劳动力,提高了生活品质。对于许多忙于工作和生的人来说,扫地机器人已经成为家庭必

    2022年4月6日
    98
  • linux暴力破解工具

    对于Linux操作系统来说,一般通过VNC、Teamviewer和SSH等工具来进行远程管理,SSH是SecureShell的缩写,由IETF的网络小组(NetworkWorkingGroup)所制定;SSH 为建立在应用层基础上的安全协议。 SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信…

    2022年4月7日
    78

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号