UVa 1428 Ping pong (树状数组)

视觉Transformer实战 | Data-efficient image Transformer(DeiT)详解与实现 在计算机视觉领域,Vision Transformer (ViT) 已经证明了纯 Transformer 架构在图像分类任务上的强大能力。然而,ViT 通常需要在大规模数据集上预训练才能达到最佳性能,DeiT (Data-efficient image Transformer) 通过引入一系列训练策略和优化,使得 Transformer 模型能够在相对较小的数据集上取得优异表现。本节将详细介绍 DeiT 的技术原理,并使用 PyTorch 从零开始实现 DeiT 模型。 阅读详情

题目链接:http://acm.hust.edu.cn/vjudge/problem/36244


题目大意:给出n个不同的数,从左到右按顺序选出三个a1,a2,a3,使得a1>a2&&a2<a3 || a1<a2&&a2>a3,问有多少种选法。


思路:本题的关键在于,对于任意一个数,怎样快速求出它的两边各有多少个数比它大(小)。我们以左边为例,假设当前的数为a[i],那么它的左边比它小的数的个数即为1,2,3......a[i]-1这几个数字各自的个数之和,这正好可以用到树状数组的区间求和性质。我们从左到右扫描所有a[i], 设num[i]为扫到a[i]时数字i的个数,那么比a[i]小的数字的个数即为num[1]~num[a[i]-1]之和。每次扫描到一个a[i]时,都要将num[a[i]]加1,这不就是动态修改单元素的值吗,树状数组搞定。


另c[i]为在a[i]左边并且小于它的数的个数,那么i-a[i]即为在其左边并且大于它的数;同理,设d[i]为在a[i]右边并且小于它的数的个数,那么大于它的就是n-i-d[i]。根据乘法原理及加法原理,累加即可。


#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<iostream>
using namespace std;
const int maxn = 100000 + 5;
typedef long long ll;
int mx;
int a[maxn], c[maxn], d[maxn], num[maxn];

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

void add(int x, int m)
{
   while(x <= mx) {
       num[x] += m;
       x += lowbit(x);
   }
}

int sum(int x)
{
    int ret = 0;
    while(x > 0) {
        ret += num[x];
        x -= lowbit(x);
    }
    return ret;
}

int main()
{
    int t;
    scanf("%d",&t);
    while(t--) {
        int n;
        scanf("%d",&n);
        for (int i = 1; i <= n; i++) {
            scanf("%d",&a[i]);
            mx = max(mx,a[i]);
        }
        memset(num, 0, sizeof num);
        for (int i = 1; i <= n; i++) {
            add(a[i],1);
            c[i] = sum(a[i]-1);
        }
        memset(num, 0, sizeof num);
        for (int i = n; i >= 1; i--) {
            add(a[i],1);
            d[i] = sum(a[i]-1);
        }
        ll sum = 0;
        for (int i = 1; i <= n; i++)
            sum += (ll)(i-1-c[i])*d[i] + (ll)(n-i-d[i])*c[i];
        printf("%lld\n",sum);
    }
}


harbor x509: certificate signed by unknown authority【20251222】 本教程通过「合并证书链(服务器端)+ 预置根 CA(客户端)」彻底解决了自签名证书的 x509 错误,同时集成了 Trivy 漏洞扫描,实现了 Harbor 从搭建到实用的全流程。证书链合并是服务器端的关键,确保客户端获取完整信任路径;客户端需同时配置「系统信任库 + Docker 信任目录」,避免 Docker 独立信任机制导致的问题;所有 IP 需保持一致(Harbor 配置、证书绑定、客户端访问),是避免错误的基础。 阅读详情

相关推荐

华科软院研究生第一学期的事项(奖学金、学业、考试等)

奖助 研究生补助 每月500,全年共6000元 每个月月底学院会打到银行卡里 碰上开学、过年会延后发放 17年10月底发了9、10两个月的钱 18年3月底发了2、3月的钱 学业奖学金 17届全日制每人都有 按照考研最后综合成绩排名 前16 10000 前80 8000 其他 4000 大概11月底发 注意:第一年如果有挂科的话,第二年就不能参加学业奖学金评...

sjdeak的博客 3706

uva1428 - Ping pong

树状数组

ACoder 199

Atlas 300I Pro推理卡性能深度测试:对比业界同类产品的能效比与算力表现

本文对昇腾Atlas 300I Pro推理卡进行了深度性能评测,重点对比了其与业界同类产品的能效比与算力表现。实测数据显示,该卡在运行BERT等模型时展现出高达39.6句子/秒/瓦的卓越能效比,电力成本可降低40%以上,同时其达芬奇架构和硬件加速特征检索能力,为高密度在线推理和向量检索场景提供了强大支撑。

weixin_29031161的博客 579

UVa 1428 - Ping pong

二叉索引树入门例题。

_____ 618

Syzkaller实战教程2:运行环境配置+实例运行

本文详细介绍了在linux系统上搭建Syzkaller内核模糊测试环境的完整流程。 1.环境配置:通过VMware创建Ubuntu20.04虚拟机A,配置QEMU/KVM虚拟化环境,安装Go语言工具链和Syzkaller; 2.内核编译:下载Linux内核源码并配置KCOV等调试选项,编译生成带覆盖率支持的bzImage内核镜像; 3.测试环境构建:使用debootstrap创建Debian虚拟机镜像,通过QEMU启动嵌套虚拟机B; 实例测试: 4.演示两种测试场景 - 提供完整上手教程

cuguanren的博客 1377

Oracle入门——基础语法篇

ROWID是Oracle中的一个伪列,用于唯一标识数据库中的每一行。在查询中,可以使用ROWID来定位和操作特定的行,例如,删除特定的行或更新特定的行。在Oracle中,子查询是指嵌套在另一个查询内部的查询语句,它可以作为主查询的一部分,用于提供额外的过滤条件、计算或数据源。在Oracle中,连接查询是通过使用JOIN子句将两个或多个表中的数据合并在一起,以获取满足特定条件的结果集。在Oracle数据库中,ROWID和ROWNUM都是用于对行进行标识和定位的伪列,它们在查询中的使用有一些不同之处。

麦当当的博客 3089

uva 1428 - Ping pong(树状数组)

题目链接:uva 1428 - Ping pong 题目大意:一条大街上住着n个乒乓球爱好者,经常组织比赛。每个人都有一个不同的能力值,每场比赛需要3个人,裁判要住在两个选手之间,并且能力值也要在选手之间,问说最多能举行多少场比赛。 解题思路:预处理出bi和ci分别表示说在1~i中能力值比第i个人小的人和i+1~n中能力值比第i个人小的。处理过程用树状数组维护即可。 #include

不慌不忙、不急不躁 1576

基于YOLOv8深度学习的火焰与烟雾检测系统详解:UI界面 + YOLOv8 + 数据集的实现

通过自动化检测火焰和烟雾,可以提高响应速度,减少潜在的火灾损失,保障人身和财产安全。此外,应用还会显示标记了检测框的视频画面,方便用户直观了解检测效果。同时,前端界面将使用Streamlit来实现,因其可以快速搭建交互式应用,适合我们的需求。要训练一个有效的火焰和烟雾检测模型,我们需要一个包含火焰和烟雾图片的数据集。为了保证模型的准确性和泛化能力,建议收集至少500张火焰和烟雾的图片,保证数据的多样性和代表性。训练过程中,模型会输出每个Epoch的训练损失和验证准确率,便于我们监控模型的学习情况。

YOLO 1321

UVA1428

n个人,从左到右排列,每个人都有一个不一样技能值 arr[i], 每场比赛3个人: 两名选手, 一名裁判。 裁判必须在两名选手中间, 并且技能值也在两名选手之间, 问一共能组织多少种比赛。 树状数组的基本应用。 #include #include #include #define LL long long #define maxn 100010 using namespace std;

I fight, so you don't have to 529

智能温室:温室环境监测_(7).土壤监测技术包括pH值和电导率

土壤的pH值是指土壤溶液的酸碱度,它对植物的营养吸收和生长发育有着重要的影响。在智能温室中,土壤监测是非常重要的一个环节,因为土壤的pH值和电导率直接影响植物的生长和健康。本节将详细介绍如何利用传感器和数据处理技术来监测土壤的pH值和电导率,并提供具体的代码示例。在智能温室中,监测到的土壤pH值和电导率数据需要传输到中央控制系统进行进一步的处理和分析。通过以上步骤,您可以构建一个完整的智能温室土壤监测系统,实时监控土壤的pH值和电导率,确保植物在最佳的生长环境中。校准通常包括在已知电导率的标准溶液中进行。

zhubeibei168的博客 1408

太阳敏感器:卫星姿态控制的“指南针

在卫星姿态控制系统中,太阳敏感器(Sun Sensor) 是至关重要的光学姿态敏感器之一。它通过探测太阳光的方向,为卫星提供关键的姿态参考信息,确保卫星能够正确调整自身方位,维持稳定的对日定向,保障能源供应和任务执行。

ScilogyHunter的博客 1731

UVA1428 Ping pong(树状数组)

UVA1428 Ping pong 一条大街上住着n个乒乓球爱好者,他们经常组织乒乓球比赛且每个人的能力值ai都不同.每次比赛需要2个比赛者和一个裁判,他们有一个奇怪的规定:当裁判的那个人必须住在这两个比赛者之间,且裁判的能力值也必须在这两个人之间.问一共有多少种比赛组织方式. 输入:首先是T(1 输出:比赛组织的总数. 分析:对于第i个(任意一个)裁判,他能组织多少种比赛呢? 假设a1

code 1505

Linux7 挂载 nfs 远程目录

每天一个 DBA 小知识,助你更进一步!

LuciferLiu_DBA 1万+

UVA1428 - Ping pong(树状数组)

UVA1428 - Ping pong(树状数组) 题目链接 题目大意:有N个人,每个人都有一个技能值ai,现在要开展乒乓球比赛,要求要有两个选手和一个裁判,要求裁判需要在两名选手的中间而且技能值也是在两名选手的中间,问可以开展多少场比赛。 解题思路:对于第i个选手当裁判的话,设它前面位置的选手有ci个技能值比它低的,那么就有i - 1 - ci个比它高的,对于第i选手后面的位置

1132

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

树状数组-UVa1428 Ping pong题解

算法分析 一、为何看到这道题想到用树状数组? 首先看到题目上有一句话:For some reason, the contestants can’t choose a referee whose skill rank is higher or lower than both of theirs.也就是说裁判的技能值必须要在两个玩家之间。但是这句话还不能让我们确定用树状数组来做这道题。还有一个关键在于...

numb_ac的博客 194

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

UVA 1428 - Ping pong(树状数组)

UVA 1428 - Ping pong 题目链接 题意:给定一些人,从左到右,每个人有一个技能值,现在要举办比赛,必须满足位置从左往右3个人,并且技能值从小到大或从大到小,问有几种举办形式 思路:利用树状数组处理出每个位置左边比它小的个数和右边比他小的个数和,那么左边和右边大就也能计算出来,那么比赛场次为左边小*右边大+左边大*右边小。 代码: #include

Remilia's 2102

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Ping pong UVA - 1428(树状数组)

N (3 ≤ N ≤ 20000) ping pong players live along a west-east street(consider the street as a line segment). Each player has a unique skill rank. To improve their skill rank, they often compete with each...

tomjobs的博客 443

Ping pong UVA - 1428 树状数组

这个题目,就是对于一个树状数组的考察,更新,求和,先说一下题目的意思,题目的要求就是需要统一,满足要求的情况下,有多少中可能,我们需要做的就是枚举裁判,然后对于一个裁判,a0 在a1到ai-1比他小的有ci个,那就有i - ci个比他大的, 同样我们需要统计在ai+1 到an-1 有di个比ai小的,然后就会有 n - 1 - i - di 个比他大的,然后根据加法原理,得到的公式为(LL)(c[

ming_514 279

uva 1428 - Ping pong(树状数组,4级)

N (3N20000) ping pong players live along a west-east street(consider the street as a line segment). Each player has a unique skill rank. To improve their skill rank, they often compete with each oth

nealgavin的专栏 1408

树状数组(二叉索引树)(uva 1428 - Ping pong )

个人认为树状数组在功能上是RMQ

LHYL 1431

UVa:1428 Ping pong (树状数组)

如果之前做过树状数组求逆序数那再做这道题就很轻松了。 枚举以每个人为裁判,有两种情况,左边的人值比裁判小右边的人比裁判大,左边的人值比裁判大右边的人值比裁判大。左右两边相乘,两种情况相加就是答案。第一种情况需要统计位于裁判左边值比它小的个数和位于右边值比它大的个数,而第二种情况可以由第一种情况推出来。 所以重点就在统计位于裁判左边值比它小的个数和位于右边值比它大的个数。 这就需要用树状数组了

Fighting 795
上一篇: UVa 11584 Partitioning by Palindromes(DP)
下一篇: UVa 11235 Frequent values (RMQ)
Interstellar_
博客等级 码龄10年 8粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值