Codeforces Round #721 (Div. 2) C. Sequence Pair Weight

news2024/11/25 16:52:08

翻译:

序列的权值定义为具有相同值(𝑎𝑖=𝑎𝑗)的无序索引对(𝑖,𝑗)(这里𝑖<𝑗)的数量。例如,序列𝑎=[1,1,2,2,1]的权值为4。具有相同值的无序索引对的集合是(1,2),(1,5),(2,5)和(3,4)。

给您一个𝑛整数的序列𝑎。打印𝑎的所有子段的权重之和。

序列𝑏是序列𝑎的子段,如果可以通过删除开始部分的几个(可能是零或全部)元素和结束部分的几个(可能是零或全部)元素从𝑎获得𝑏。

输入
每个测试包含多个测试用例。第一行包含测试用例的数量𝑡(1≤𝑡≤105)。测试用例的描述如下。

每个测试用例的第一行包含一个整数𝑛(1≤𝑛≤105)。

每个测试用例的第二行包含𝑛整数𝑎1,𝑎2,…,𝑎𝑛(1≤𝑎𝑖≤109)。

可以保证所有测试用例中𝑛的总和不超过105。

输出
对于每个测试用例,打印一个整数—𝑎的所有子段的权值之和。

例子
inputCopy
2
4
1 2 1 1
4
1 2 3 4
outputCopy
6
0
请注意
在测试用例1中,序列[1,2,1,1]的大小大于1的所有可能的子段为:
[1,2]有0个有效的无序对;
[2,1]有0个有效的无序对;
[1,1]具有1个有效的无序对;
[1,2,1]具有1个有效的无序对;
[2,1,1]具有1个有效的无序对;
[1,2,1,1]有3个有效的无序对。
答案是6。
在测试用例2中,序列的所有元素都是不同的。因此,对于任何子数组,都没有具有相同值的有效无序对。答案是0。

思路:所有子段可能,因为有有效的的无序对,对答案才有贡献。然后是所以子段和,我们可以分别对两边进行扩展,这样就是左右两边相乘,累加,就可以得出答案。

代码:

#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <math.h>
#include <stdio.h>
#include<vector>
#include<queue>
#include<map>
#include<set>
#include<tuple>
#include<numeric>
#include<stack>
using namespace::std;
typedef long long  ll;
int n,t;
inline __int128 read(){
    __int128 x = 0, f = 1;
    char ch = getchar();
    while(ch < '0' || ch > '9'){
        if(ch == '-')
            f = -1;
        ch = getchar();
    }
    while(ch >= '0' && ch <= '9'){
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x * f;
}
inline void print(__int128 x){
    if(x < 0){
        putchar('-');
        x = -x;
    }
    if(x > 9)
        print(x / 10);
    putchar(x % 10 + '0');
}

ll w;
void solv(){
    map<ll,ll>q;
    cin>>n;
    ll ans=0;
    for (int i =1; i<=n; i++) {
        cin>>w;
        ans+=q[w]*(n-i+1);
        q[w]+=i;
    }
    printf("%lld\n",ans);
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(); cout.tie();
    cin>>t;
    while (t--) {
        solv();
    }
    return 0;
}
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/48516.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5-UI自动化-三大切换,iframe如何定位,窗口新开、alert弹窗如何进行元素定位

5-UI自动化-三大切换&#xff0c;iframe如何定位&#xff0c;窗口新开、alert弹窗如何进行元素定位新开一个窗口如何定位元素switch_to方法iframe定位元素alert弹窗如何定位元素上篇介绍4-UI自动化-selenium三大等待操作 web测试过程中有没有遇到以下问题&#xff1a; 1、测试…

中概股回暖,B站打开向上通道

“回来了&#xff0c;我感觉他们都回来了。”周星驰《少林足球》中这句经典台词&#xff0c;最近成为了中概股投资者的口头禅。 财报季临近尾声&#xff0c;好消息已经层出不穷。中概互联网指数KWEB在11月的涨幅超过30%&#xff0c;不少个股从低位大幅反弹&#xff0c;其中就包…

C/C++家族族谱管理系统

C/C家族族谱管理系统 课题名称: 家族族谱管理 主要目标: 通过训练&#xff0c;强化学生对树结构、二叉树结构的表示及操作算法的掌握和灵活运用 3.具体要求: 要求设计实现具有下列功能的家谱管理系统: (1) 输入文件以存放最初家谱中各成员的信息&#xff0c;成员的信息中…

[Java] 从内存的角度去理解ThreadLocal如何把不同线程间的访问隔离开来?ThreadLocal的内存泄露问题是什么?如何避免?

文章目录前言前置知识&#xff1a;堆内存与栈内存普通数据结构类和ThreadLocal存取数据的不同&#xff1f;结合源码来看ThreadLocal如何实现的1. ThreadLocal类get方法2. ThreadLocal类的getMap(Thread)方法3. Thread类的threadLocals属性4. ThreadLocal类的setInitialValue()方…

win11该文件没有与之关联的应用怎么办

win11用户在使用电脑的时候遇到了“该文件没有与之关联的应用”的提示&#xff0c;这是怎么回事呢&#xff1f;应该怎么办呢&#xff1f;出现这个情况应该是注册表被误删了&#xff0c;大家需要新建一个文本文档&#xff0c;然后输入下文提供的指令&#xff0c;之后将其重命名为…

亚信科技亮相南京软博会,数智赋能百行千业

11月23至25日&#xff0c;主题为“软件赋能 数智转型”的2022中国&#xff08;南京&#xff09;国际软件产品和信息服务交易博览会在南京国际博览中心盛大启幕。“数智化全栈能力提供商”亚信科技携“云网边端”产品体系&#xff0c;5G、人工智能、边缘AI、机器人流程自动化、数…

AlphaFold2源码解析(4)--模型架构

AlphaFold2源码解析(4)–模型架构 我们将Alphafold的流程分为一下几个部分&#xff1a; 搜索同源序列和模板特征构造特征表示MSA表示与残基对表示之间互相交换信息残基的抽象表示转换成具体的三维空间坐标 模型参数 AlphaFold有多个不同类型的参数&#xff08;单体&#x…

一文让你理解Linux权限问题

前言&#xff1a; 权限是个很重要的一部分&#xff0c;无论是在Linux系统中还是在生活里&#xff0c;权限都是必不可缺失的一部分&#xff0c;在生活中&#xff0c;权限是很常见的&#xff0c;例如VIP&#xff0c;如果你不是VIP你就不能享用VIP的一些特有的功能&#xff0c;这就…

WebRTC学习笔记四 RTCDataChannel

一、RTCDataChannel 简单来说&#xff0c;RTCDataChannel 就是在点对点连接中建立一个双向的数据通道&#xff0c;从而获得文本、文件等数据的点对点传输能力。它依赖于流控制传输协议&#xff08;SCTP&#xff09;&#xff0c;SCTP 是一种传输协议&#xff0c;类似于 TCP 和 U…

[ECCV2022]Language-Driven Artistic Style Transfer

标题&#xff1a;Language-Driven Artistic Style Transfer 链接&#xff1a;https://sites.cs.ucsb.edu/~william/papers/LDAST.pdf 如标题所示&#xff0c;本文做的是基于文本引导的风格迁移。整体的思路还是用的AST(arbitrary style transfer)那一套自编码器结构。AST的思…

期中考试【Verilog】

期中考试【Verilog】前言推荐期中考试一. 单选题&#xff08;共10题&#xff09;二. 填空题&#xff08;共5题&#xff09;三. 简答题&#xff08;共3题&#xff09;四. 其它&#xff08;共4题&#xff09;最后前言 编写于2022/11/30 13:30 以下内容源自Verilog期中试题 仅供…

Windows访问centOS的Tomcat

首先&#xff0c;先准备好jdk1.8和Tomcat的文件 点击此处获取jdk1.8和Tomcat的文件&#xff08;提取码&#xff1a;xxrc&#xff09; 配置IP地址 打开终端输入ifconfig&#xff0c;检查centOS的ip地址 根据要求&#xff0c;是要把ip地址最后一位改为自己的学号&#xff08;前…

手把手教你做智能合约开源|多文件合约开源|引用文件开源

本文手把手教你使用 区块链浏览器 验证智能合约的三种方式。 验证单一 Solidity 文件 在开始验证之前&#xff0c;我们需要首先部署智能合约。进入 Remix IDE&#xff0c;创建一个合约新文件。复制粘贴下面的代码&#xff1a; // SPDX-License-Identifier: MITpragma solidit…

夜曲编程Python体验课

目录 day1 编程中的“文本” 代码规范 打印数字 打印字符串 注释 总结思维导图 day2 变量与赋值 变量 常量 赋值 格式化输出 转义字符&#xff1a; 总结思维导图 day3 编程中的“数字” 整形 浮点型 运算符 四种常见的四则运算符&#xff08; - * / &…

【软件测试】测试人的我们,咋做一个如鱼得水的测试员?

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 一千个人&#xff0…

短视频创作,主动变现和被动变现方式详解,建议收藏反复阅读-下

同样先说纲要&#xff0c;有兴趣可以继续看下去&#xff0c;上一篇讨论了抖音变现的有三个建议&#xff0c;①变现标准低、②变现天花板高、③可主动变现。 这一篇的内容只要是抖音上被动和主动两类变现方式&#xff0c;涉及了直播打赏&#xff0c;广告接单&#xff0c;视频带货…

小啊呜产品读书笔记001:《邱岳的产品手记-15》第28讲 产品分析的套路(上):谁是利益相关者? 29讲产品分析的套路(中):解决什么问题?

小啊呜产品读书笔记001&#xff1a;《邱岳的产品手记-15》第28讲 产品分析的套路&#xff08;上&#xff09;&#xff1a;谁是利益相关者&#xff1f;& 29讲产品分析的套路&#xff08;中&#xff09;&#xff1a;解决什么问题&#xff1f; 一、今日阅读计划二、泛读&知…

【Big Data】Hadoop--MapReduce经典题型实战(单词统计+成绩排序+文档倒插序列+每月Top3温度)

&#x1f34a;本文使用了4个经典案例进行MapReduce实战 &#x1f34a;参考官方源码&#xff0c;代码风格较为优雅 &#x1f34a;解析详细 一、Introduction MapReduce是一个分布式运算程序的编程框架&#xff0c;核心功能是将用户写的业务逻辑代码和自身默认代码整合成一个完整…

vue+videojs视频播放、视频切换、视频断点分段上传

“本次需求是做一个视频列表&#xff0c;点击视频列表播放对应视频&#xff1b;同时要求实现断点分段上传大文件&#xff08;视频&#xff09;的功能 。 videojs文档&#xff1a;Getting Started with Video.js - Video.js: The Player Framework | Video.js 断点续传组件地址…

WebRTC学习笔记六 兼容性 adapter.js

一、adapter.js发展背景 adapter.js自2012年底或者2013年初WebRTC早期的时候就已经出现了。它最初是Google的apprtc demo的一部分。原始版本仍可在Chrome tree中找到。它是一个非常小的项目&#xff0c;还没有150行。主要功能是隐藏像webkitRTCPeerConnection和mozRTCPeerConne…