当前位置: 首页 > wzjs >正文

网站icp备案号查询电子商务网站建设 代码

网站icp备案号查询,电子商务网站建设 代码,网站建设与设计饰品,在线写网页题目描述 Erwin 最近对一种叫 thair 的东西巨感兴趣。。。 在含有 n 个整数的序列 a1​,a2​,…,an​ 中&#xff0c;三个数被称作thair当且仅当 i<j<k 且 ai​<aj​<ak​。 求一个序列中 thair 的个数。 输入格式 开始一行一个正整数 n, 以后一行 n 个整数 …

题目描述

Erwin 最近对一种叫 thair 的东西巨感兴趣。。。

在含有 n 个整数的序列 a1​,a2​,…,an​ 中,三个数被称作thair当且仅当 i<j<k 且 ai​<aj​<ak​。

求一个序列中 thair 的个数。

输入格式

开始一行一个正整数 n,

以后一行 n 个整数 a1​,a2​,…,an​。

输出格式

一行一个整数表示 thair 的个数。

输入输出样例

输入 #1复制

4
2 1 3 4

输出 #1复制

2

输入 #2复制

5
1 2 2 3 4

输出 #2复制

7

说明/提示

样例2 解释

7 个 thair 分别是:

  • 1 2 3
  • 1 2 4
  • 1 2 3
  • 1 2 4
  • 1 3 4
  • 2 3 4
  • 2 3 4
数据规模与约定
  • 对于 30% 的数据 保证 n≤100;
  • 对于 60% 的数据 保证 n≤2000;
  • 对于 100% 的数据 保证 1≤n≤3×104,1≤ai​≤105。

代码实现:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

// 树状数组类
class FenwickTree {
private:
    vector<int> tree;
    int size;

public:
    FenwickTree(int n) : size(n), tree(n + 1, 0) {}

    void update(int idx) {
        while (idx <= size) {
            tree[idx]++;
            idx += idx & -idx;
        }
    }

    int query(int idx) {
        int sum = 0;
        while (idx > 0) {
            sum += tree[idx];
            idx -= idx & -idx;
        }
        return sum;
    }
};

int main() {
    int n;
    cin >> n;
    
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    
    // 离散化处理
    vector<int> b = a;
    sort(b.begin(), b.end());
    b.erase(unique(b.begin(), b.end()), b.end());
    
    // 计算left[j]:j之前小于a[j]的元素个数
    vector<int> left(n, 0);
    FenwickTree ft1(b.size());
    for (int j = 0; j < n; j++) {
        int idx = lower_bound(b.begin(), b.end(), a[j]) - b.begin() + 1;
        left[j] = ft1.query(idx - 1);
        ft1.update(idx);
    }
    
    // 计算right[j]:j之后大于a[j]的元素个数
    vector<int> right(n, 0);
    FenwickTree ft2(b.size());
    for (int j = n - 1; j >= 0; j--) {
        int idx = lower_bound(b.begin(), b.end(), a[j]) - b.begin() + 1;
        // j之后的元素总数是n-1-j个
        // ft2.query(idx)表示到当前为止(从右到左)小于等于a[j]的元素个数
        // 所以right[j] = (j之后的元素总数) - (小于等于a[j]的元素个数)
        right[j] = (n - 1 - j) - ft2.query(idx);
        ft2.update(idx);
    }
    
    // 计算所有thair的数量
    long long count = 0;
    for (int j = 0; j < n; j++) {
        count += (long long)left[j] * right[j];
    }
    
    cout << count << endl;
    
    return 0;
}

http://www.dtcms.com/wzjs/546857.html

相关文章:

  • 辽宁网站建设网站设计可以吗
  • 做视频网站需要多大空间做刷单网站违法吗
  • 用家里的路由器做网站平面设计资源网站
  • 1688网站入口上海营销型网站seo
  • 微信营销微网站建设企业网站建设属于什么科目
  • 帮人负责做网站叫什么工作微信小程序设计软件
  • 如何做一个手机网站网站做edi认证有用没
  • 务川县建设局官方网站网页设计图片向左移是什么代码
  • 吉林平台网站建设哪里有做游戏网站需要哪些许可
  • 网站设计服务企业网站 专题建设服务
  • 做数据的网站长沙网站设计培训机构
  • 摄影作品网站建设方案书微信平台软件开发
  • 做像58同城这样的网站能用mysql数据库吗wordpress自定义功能
  • 做外包哪个网站好一些中英文网站案例
  • 做巧克力的网站搜索引擎优化的方法包括
  • 免费网站如何注册软件开发步骤及周期
  • 织梦贷款网站源码百度爱采购网站官网
  • 做网站用什么系统好wordpress添加script
  • 网站建设 网站制作 网站设计驾校做网站
  • 产品设计公司网站银川如何做百度的网站
  • 建设电影网站选服务器怎么选wordpress插件如何使用教程
  • 网站建设技巧讠金手指排名26wordpress多个主题
  • 漯河做网站xknt企业网络营销策划平台
  • 一般网站用什么做的郑州网站排名分析
  • 上海定制化网站开发论文格式样板模板
  • 如何做自己的淘宝客网站科讯怎么建设网站
  • designer怎么做网站wordpress下载破解版
  • 有做网站需求的客户谷歌sem
  • 东莞网站建设 餐饮南京前十名传媒广告公司
  • 做农业的公司管理网站平度网站建设ld4