[Tyvj Jan]楼兰图腾(树状数组)

NCSTOJ 1424 CH4201 楼兰图腾 —— 树状数组 Description 在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。 西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N... 阅读详情

                            [Tyvj Jan]楼兰图腾

题目链接:http://www.joyoi.cn/problem/tyvj-1432

题目描述

在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。
西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不妨设坐标分别为(1,y1),(2,y2),…,(n,yn),其中y1~yn是1到n的一个排列。
西部314打算研究这幅壁画中包含着多少个图腾,其中V图腾的定义如下(注意:图腾的形式只和这三个纵坐标的相对大小排列顺序有关)1<=i<j<k<=n且yi>yj,yj<yk;

而崇拜∧的部落的图腾被定义为1<=i<j<k<=n且yi<yj,yj>yk;

西部314想知道,这n个点中两个部落图腾的数目。因此,你需要编写一个程序来求出V的个数和∧的个数。

输入格式

第一行一个数n
第二行是n个数,分别代表y1,y2……yn

输出格式

两个数
中间用空格隔开
依次为V的个数和∧的个数

提示

样例解释

数据范围
10%的数据 n<=600
40%的数据 n<=5000
100%的数据 n<=200000,答案不超过int64西部314\admin  tyvj首届月赛第四道

样例数据

输入样例 #1输出样例 #1
5
1 5 3 2 4

3 4

题解:对于每一个点来说找到前面比他大的个数与后面比他大的个数,两者乘积就是V的个数,同理前面,后面比他小的个数乘积就是^的个数,那么通过树状数组便可以快速的求出,最后求乘积即可。

AC代码:

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 200006;
#define _for(i,a,b) for(int i=a;i<=b;i++)
#define nofor(i,a,b) for(int i=a;i>=b;i--)
int n,a[maxn],c[maxn],left_num[maxn],right_num[maxn];
int lowbit(int x)
{
    return x=x&(-x);
}
void insert(int x,int y)
{
    while(y<=n)
    {
        c[y]+=x;
        y+=lowbit(y);
    }
}
int getsum(int x)
{
    int sum = 0;
    while(x>0)
    {
        sum+=c[x];
        x-=lowbit(x);
    }
    return sum;
}
int main(int argc, char const *argv[])
{
    scanf("%d",&n);
    _for(i,1,n)cin>>a[i];
    nofor(i,n,1)
    {
        int k = getsum(a[i]);
        insert(1,a[i]);
        right_num[i]=k;
    }
    _for(i,1,n)c[i]=0;
    _for(i,1,n)
    {
        int k = getsum(a[i]);
        insert(1,a[i]);
        left_num[i]=k;
    }
    long long ans1 = 0;
    _for(i,1,n)
    {
        ans1+=left_num[i]*right_num[i];
    }
    long long ans2 = 0;
    _for(i,1,n)
    {
        ans2+=(i-1-left_num[i])*(n-i-right_num[i]);
    }
    cout<<ans2<<" "<<ans1<<endl;
    return 0;
}

别再只盯着YOLOv8了!手把手带你用PaddleDetection的PP-YOLOE+搞定你的第一个检测项目 本文介绍了PP-YOLOE+在目标检测领域的优势与应用实践,对比YOLOv8展示其在精度、速度和部署便利性上的突破。通过详细的代码示例和实战教程,帮助开发者快速上手PaddleDetection工具链,实现产业级目标检测项目,提升开发效率。 阅读详情

相关推荐

(HAL)stm32f407+freertos通过usb驱动移远4G模块-EC600U

文章记录了stm32cubemx+stm32f407+freertos+usb host实现移远4G模块EC600U的usb驱动的调试过程,usb host cdc库的使用和遇到的问题及解决办法。

gongrulin的博客 3900

楼兰图腾(树状数组)

这样的话这题思路就很清晰了,运用树状数组维护一下当前数字前面有多少数大于或小于当前数字,这样就得到了所有数字的前缀数量,再倒序来一遍得到后缀,将前缀和后缀相乘就是当前数字为中心组成的图腾数量。思路: 题目字很多,但是题意并不难懂,其实我们就是要找当前数前面和后面分别有多少数大于或小于当前数字,然后再将找到的两个数量相乘就是当前数字能组成的图腾数量。对于其中的“3”左边有两个小于它的数,右边也有两个小于它的数,所以以“3”为中心能组成的“V”图腾有 2 * 2 = 4 个以此类推。

m0_63845143的博客 580

使用MLP解决OCR问题(OpenCV)(下)

分类模型:        分类模型涉及的一个比较关键的问题就是输出的10维向量是如何与具体的类别挂钩的。实际上:10维向量的每一位都代表一类,在对于训练集的表达中,如果输入数据是0,则10维向量的第一位赋值为1,其余均为0。即0对应[1,0,0,0,0,0,0,0,0,0]。MLP模型训练完成后,就需要对用户输入的数据所属类别进行判定。这时得到的输出数据基本不可能是正好的所属类为1,其他位置为0

qq_18515405的专栏 1907

题目-楼兰图腾-树状数组

在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不...

qq_45772483的博客 376

24. SAP 标准产品里使用 OData 服务的一些细节分享

笔者在编写使用事物码 SEGW 开发 SAP OData 服务的系列步骤时,但凡遇到技术上一些疑难问题,喜欢去参照 SAP 标准产品里是如何使用 OData 服务的,不少问题都可以去参考 SAP 标准产品的 OData 服务实现细节来解决。 因此本文记录笔者在编写本教程的过程中,曾经研究过的 SAP OData 服务实现的一些细节,把这些细节分享给大家,希望能起到参考作用。 同时,教程也不断收到一些朋友在评论区留言,对于不少留言的回复,我也是拿 SAP 标准 OData 服务的实现作为论据来回复的。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2033

【WorkBuddy专栏52】Codex与WorkBuddy生态适配、用户争夺与未来走向(下)

【WorkBuddy专栏52】Codex与WorkBuddy在中国大陆的发展——生态适配、用户争夺与未来走向(下)

AI人人懂 679

楼兰图腾(树状数组)

在完成了分配任务之后,西部314来到了楼兰古城的西部。 相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用 V和∧的形状来代表各自部落的图腾。 西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。 西部314认为这幅壁画所包含的信息与这N个点的相对位置有关,因此不妨设坐标分别为(1,y1),(2,y2),…,(n,yn), 其中y1~yn是1到n的一个排列。 西部3

帅小柏的博客 334

PCL 改进快速欧式聚类【2025最新版】

在FEC: Fast Euclidean Clustering for Point Cloud Segmentation一文的基础上对算法进行改进。博客长期更新,本文最近更新时间为:2025年9月16日。

点云侠的博客 2570

楼兰图腾【按拓扑序讲解】

坚持,冲!

m0_63613132的博客 311

宇树G1开发实践--PPT汇报(遥控版)

本文介绍了一种基于遥控器交互的机器人演示控制系统。系统通过DDS中间件接收遥控器信号,采用位掩码边沿检测技术实现按键精准响应,将不同按键映射为播放控制命令(暂停/重播、跳转、跳过等)。核心交互逻辑包含主播放循环、命令处理和暂停机制,支持播放过程中的实时控制。与自动顺序播放版相比,该系统显著提升了演示灵活性,适用于需要人机互动的演讲场景。使用前需确保网络连接和设备安全,并熟悉按键功能映射。该系统实现了专业级的人机协同演示体验。

m0_47999117的博客 680

ardupilot BMI088加速度陀螺仪学习

本节主要记录ardupilot 中BMI088传感器的学习过程,欢迎批评指正。BMI088是一款高性能6轴惯性传感器,由16位数字三轴±24g加速度计和16位数字三轴±2000°/ s陀螺仪组成。 BMI088允许高精度测量方向和沿三个正交轴的运动检测。BMI088具有高振动鲁棒性和3 x 4.5 x0.95mm³的小尺寸,是用于无人机和机器人应用等恶劣环境的高性能IMU中的独特产品。 BMI088专门设计用于有效抑制由于PCB上的共振或整个系统的结构而可能发生的振动。 除了高振动稳定性外,BMI088的出

陌城烟雨 2056

[Tyvj Jan]1432楼兰图腾(树状数组)

[Tyvj Jan]楼兰图腾 题目描述 在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。 西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅...

闲人请进 240

PyTorch实战(13)——图卷积网络(Graph Convolutional Network,GCN)

图卷积网络 (Graph Convolutional Network, GCN) 模型能够同时结合节点级特征和图级(邻域)信息进行分类,显著提升了图数据建模能力,适用于节点分类、图分类等多种任务。本节中,我们通过 PyTorch Geometric 库在 CiteSeer 图数据集上构建模型,们首先用前馈神经网络作为基线模型完成节点分类任务,随后用 GCN 模型替代前馈网络显著提升了分类准确率。

盼小辉丶的博客 3280

TYVJ1432 楼兰图腾

Description平面上有 N(N≤〖10〗^5 ) 个点,每个点的横、纵坐标的范围都是 1~N,任意两个点的横、纵坐标都不相同。 若三个点 (x_1,y_1),(x_2,y_2),(x_3,y_3 ) 满足 x_1&lt;x_2&lt;x_3, y_1&gt;y_2 并且 y_3&gt;y_2,则称这三个点构成"v"字图腾。 若三个点 (x_1,y_1),(x_2,y_2),(x_3,y_3...

雪影 1277

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

楼兰图腾

楼兰图腾 题目描述 题目解释 题目会给定n个点,然后这n个点的横坐标已经固定了(即1~n),但是题目会输入这n个点的纵坐标,但是这n个点的纵坐标是不确定的,唯一能够确定的是这n个点的纵坐标的范围是在1和n之间。 题目要求我们从给定的这n个点中,选择某些点,构成V图腾,求出V图腾的个数; 题目要求我们从给定的这n个点中,选择某些点,求出能够构成^图腾的个数。 如图,由图可知,能够构成V图腾的个数有3个 如图,由图可知,能够构成^图腾的个数有4个。 核心思路 对于V图腾来说,假设我们当前枚举的某个点A

qq_45832461的博客 261

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

楼兰图腾题解(树状数组解法)

描述 在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(‘V’),一个部落崇拜铁锹(‘∧’),他们分别用V和∧的形状来代表各自部落的图腾。 西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了N个点,经测量发现这N个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画所包含的信息与这N个点的相对位置有关...

帅比王的博客 1337

树状数组经典例题:楼兰图腾+一个简单的整数问题+一个简单的证书问题2+谜一样的牛

相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(∧),他们分别用 V 和 ∧ 的形状来代表各自部落的图腾。如果三个点 (i,yi),(j,yj),(k,yk) 满足 1≤i

2302_79372568的博客 801

AcWing 241 楼兰图腾(树状数组详解)

树状数组是一种实现起来比较简单的高级数据结构。我们知道,对于一个数组a[i],其前缀和s[i]表示a数组里面前i个元素之和,而求区间l到r的元素之和可以用s[r] - s[l-1]来求。现在有个单点修改,区间查询的问题,也就是修改原始数组a中某个元素,然后查询某段区间内元素之和。暴力做法修改a中某个元素的时间复杂度是O(1),查询区间和复杂度是O(n);如果将前缀和数组利用起来,那么查询区间和操作的复杂度固然可以降为O(1),但是单次修改操作后更新前缀和数组的复杂度却是O(n)的。现在我们需要实现修改和查询

昂昂累世士的博客 622

Acwing.241 楼兰图腾(树状数组)

如果三个点(i, yi),(j,yj), (k, yk)满足1 ≤i

qq_62235017的博客 410

树状数组<一>

树状数组可以用来统计区间中大于或者小于某个数的个数,需要让add(y, 1), 然后sun(y - 1)就是小于y的个数,sum(n) - sum(y) 就是大于y的个数。 模板代码 int lower_bit(int x) { return x & (-x); } void add(int x, int num) { for (int i = x; i <= n; i += lower_bit(i)) c[i] += num; } int sum(int x) { .

fuzekun的博客 744

「Tyvj1432」 楼兰图腾 - 树状数组

题目描述 在完成了分配任务之后,西部314来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V)(V)(V),一个部落崇拜铁锹(∧)(∧)(∧),他们分别用VVV和∧∧∧的形状来代表各自部落的图腾。 西部314在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了NNN个点,经测量发现这NNN个点的水平位置和竖直位置是两两不同的。西部314认为这幅壁画...

TbYangZ的博客 427

241. 楼兰图腾——树状数组

在完成了分配任务之后,西部 314 来到了楼兰古城的西部。相传很久以前这片土地上(比楼兰古城还早)生活着两个部落,一个部落崇拜尖刀(V),一个部落崇拜铁锹(∧),他们分别用 V 和 ∧ 的形状来代表各自部落的图腾。西部 314 在楼兰古城的下面发现了一幅巨大的壁画,壁画上被标记出了 n 个点,经测量发现这 n 个点的水平位置和竖直位置是两两不同的。

与其邻渊羡渔,不如退而结网 962
上一篇: CODEVS 1540 银河英雄传说(并查集)
下一篇: 环形石子合并问题(动态规划)(洛谷P1880)
sortmin
博客等级 码龄9年 45粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值