首页 > 其他分享 >2024.9.23校测

2024.9.23校测

时间:2024-09-24 15:45:50浏览次数:10  
标签:dots 输出 23 2024.9 校测 样例 leq 序列 逆序

T1

题目描述

如果你有一个长度为 n 的序列:\(a_1, a_2, a_3, \dots, a_n\),那么它的一个逆序对是一个二元组:\(< i, j >\) 满足 \(i < j\) 且 \(a_i > a_j\),其中 \(i, j \in [1, n]\)。

我们称一个序列所包含的逆序对的个数为这个序列的逆序对数。

那么问题来了:

我给出一个长度为 n 的序列,需要你计算:

\[a_1, a_2, \dots, a_{n−1}, a_n\\ a_2, a_3, \dots, a_n, a_1\\ a_3, a_4, \dots, a_1, a_2\\ \dots\\ a_n, a_1, \dots, a_{n−2}, a_{n−1} \]

这 \(n\) 个序列的逆序对个数之和。

输入格式

输入文件包含 \(2\) 行:

第 \(1\) 行 \(1\) 个整数:\(n\),表示给定序列的长度。

第 \(2\) 行 \(n\) 个整数:\(a_1, a_2, \dots, a_n\),表示初始序列。

输出格式

输出 \(n\) 个序列的逆序对个数的和。

输入样例1

3
2 2 3

输出样例1

3

样例1解释

以上样例中,3 个序列分别是:\(2, 2, 3\),\(2, 3, 2\),\(3, 2, 2\),分别有 \(0, 1, 2\) 个逆序对,所以和为 \(3\)。

输入样例2

3
1 1 1

输出样例2

0

样例2解释

以上样例中,\(3\) 个序列都是:\(1, 1, 1\),逆序对数为 \(0\),所以答案为 \(0\)。

数据规模

对于 \(30\%\) 数据,\(1 \leq n \leq 300\)。

对于 \(60\%\) 数据,\(1 \leq n \leq 5000\)。

对于 \(100\%\) 数据,\(1 \leq n \leq 10^6, 1 \leq a_i \leq n\)。

完整代码

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e6 + 9;
int t[N * 24], a[N << 1], n, now, ans;
int lowbit(int x){
	return x & (-x);
}
void insert(int p, int x){
	for(int i = p; i <= n; i += lowbit(i))
		t[i] += x;
}
int query(int p){
	int ret = 0;
	for(int i = p; i; i -= lowbit(i))
		ret += t[i];
	return ret;
}
signed main(){
	freopen("rotinv.in", "r", stdin);
	freopen("rotinv.out", "w", stdout);
	scanf("%lld", &n);
	for(int i = 1; i <= n; i++){
		scanf("%lld", &a[i]);
		a[n + i] = a[i];
	}
	for(int i = 1; i <= n; i++){
		now += (i - 1) - query(a[i]);
		insert(a[i], 1);
	}
	ans = now;
	for(int i = n + 1; i < n + n; i++){
		insert(a[i - n], -1);
		now += (n - 1) - query(a[i]);
		now -= query(a[i - n] - 1);
		insert(a[i], 1);
		ans += now;
	}
	printf("%lld", ans);
	return 0;
} 

T2

题目描述

你有一堆柱子,它们竖直地并排摆放在桌子上,它们的高度分别是:\(h_1, h_2, h_3, \dots, h_n\)。

你从前往后看,能够看见的柱子个数为这个柱子序列的“可见度”(能够看见柱子 \(i\) 当且仅当 \(hj < hi\) 且 \(j < i\))。

现在给你一个长度为 \(n\) 的序列,还有 \(m\) 个询问,每次询问某个区间 \([l, r]\) 的柱子单独拿出来后,其可见度是多大。

输入格式

第 \(1\) 行 \(2\) 个整数:\(n, m\),表示给出的柱子序列的长度和询问数。

第 \(2\) 行 \(n\) 个整数:\(a_1, a_2, a_3, \dots, a_n\),表示每根柱子对应的高度。

接下来 \(m\) 行,每行 \(2\) 个整数:\(l, r\),表示对区间 \([l, r]\) 进行询问。

输出格式

对于每个询问,输出答案。

输入样例

5 4
1 3 2 4 2
1 4
2 4
1 3
2 3

输出样例

3
2
2
1

样例解释

样例中“能够看见”的柱子的高度分别是:\(1, 3, 4\),\(3, 4\),\(1, 3\),\(3\)。

数据规模

对于 \(30\%\) 的数据,\(1 \leq n, m \leq 10^3\)。

对于 \(100\%\) 的数据,\(1 \leq n, m \leq 10^5, 1 \leq a_i \leq n, 1 \leq l \leq r \leq n\)。

T3

题目描述

给你一棵无根树,边有边权,且是 \([0, 9]\) 之间的整数,给你 \(m\) 个询问,每次询问两个点 \(u, v\) 之间的路径的边的边权顺次连接起来后构成的那个数字取模于 \(31\)。

输入格式

第 \(1\) 行 \(2\) 个整数:\(n, m\),表示树的节点个数和询问数。

接下来 \(n − 1\) 行,每行 \(3\) 个数:\(u, v, d\) 表示点 \(u\) 和点 \(v\) 之间有一条边权为 \(d\) 的边。

接下来 \(m\) 行,每行 \(2\) 个整数:\(u, v\) 表示一个询问。

输出格式

对于每个询问输出其答案。

输入样例

5 3
1 2 2
1 3 8
3 4 9
3 5 2
1 4
2 5
5 2

输出样例

27
24
6

样例解释

样例中三条路径对应的数字分别是:\(89, 582, 285\),它们被 \(31\) 取模后为:\(27, 24, 6\)。

数据规模

对于 \(30\%\) 的数据,\(1 \leq n, m \leq 10^3\)。

对于 \(100\%\) 的数据,\(1 \leq n, m \leq 10^5, 1 \leq u, v \leq n, u \neq v, 0 \leq d \leq 9\)。

标签:dots,输出,23,2024.9,校测,样例,leq,序列,逆序
From: https://www.cnblogs.com/JPGOJCZX/p/18429295

相关文章

  • 9 - 22 ~ 9 - 23 模拟赛报告
    24922四个小时四道题T1字少果断开。给定正整数\(n\),计算\(n\)个元素的集合\(\{1,2,\cdots,n\}\),所有非空子集和的乘积取模\(998244353\)后的结果。\(taskid\)\(n\)\(1\sim3\)\(=taskid\)\(4\sim6\)\(\le20\)\(7\sim9\)\(\le50\)\(1......
  • 2024.9.24 人工智能技术学 第二课时 思维导图工具
    1、Xmind思维导图制作从作者、内容、主题、知识点着手,概述了“一个豆荚里的五粒豆”的大致内容和重点。以一个豆荚里的五粒豆作为主题,以作者、内容、主题、知识点作为分支,再衍生子主题进行扩展2、PDF(便携式文档格式)转换器工具1:CAJViewer9.2网址:https://cajviewer.cnki.n......
  • 2024.9.24 test
    十三联测#7B已知有一棵树,有\(n-1\)次操作,每次操作之前没有操作过的点\(x\):新建节点\(x+n\),并扫描原树上与\(x\)连接的点\(j\),若存在\((j+n,x)\)的边就删掉,换成\((j+n,x+n)\)。否则,加入\((x+n,j)\)这条边。每次操作完询问生成树的个数。\(n\le5000\)。非常难......
  • 文心一言 VS 讯飞星火 VS chatgpt (348)-- 算法导论23.2 7题
    七、假定图G的一棵最小生成树已经被计算出来。如果在图中加入一个新结点及其相关的新边,我们需要多少时间来对最小生成树进行更新?如果要写代码,请用go语言。文心一言:在图中加入一个新节点及其相关边后,要更新最小生成树(MST),通常意味着需要重新计算包含新节点的最小生成树,因为新节点的加......
  • 文心一言 VS 讯飞星火 VS chatgpt (347)-- 算法导论23.2 6题
    六、假定一个图中所有的边权重均匀分布在半开区间[0,1)内。Prim算法和Kruskal算法哪一个可以运行得更快?如果要写代码,请用go语言。文心一言:在比较Prim算法和Kruskal算法在特定条件下的性能时,我们需要考虑几个因素,主要是图的表示方式、边的数量、顶点的数量以及边的权重分布。由于在......
  • cocosCreator234版本物理射线使用
    物理射线使用总结 适用:引擎:cocostcreator2.3.4 充分条件:1:物理分组要开放碰撞功能,如地板分组为ground。则:  必须勾选才行。2:地板上要挂碰撞体:  可以不加物理刚体。3:必需开篇3D物理引擎:cc.director.getPhysics3DManager().enabled=true; 实现方法:1:点击......
  • 【2024-09-23】篮友聚会
    23:59人类对自己的了解,宛如暗夜行路,要了解自己,就,需要他人的力量。                                              ——荣格周末,跟一群篮球爱好者大学校友聚会。这是我们第二......
  • 2024.9.23docker常用命令
    1.容器管理查看运行中的容器:dockerps查看所有容器(包括已停止的):dockerps-a启动容器:dockerstart<container_id或container_name>停止容器:dockerstop<container_id或container_name>重启容器:dockerrestart<container_id或container_name>删除......
  • 题解 [ARC184B] 123 Set
    个人认为思维难点相同的三倍经验:P3226[HNOI2012]集合选数、TFSETS-Triple-FreeSets。区别在于状压DP的方法。我们称不包含质因子\(2\)和\(3\)的数为\(2,3\texttt{-Free}\)的。对于\([1,n]\)内每个\(2,3\texttt{-Free}\)的整数\(u\),可以列出以下的矩阵:\[\begi......
  • 923kmp 01背包
    kmp遍历一次主串匹配子串求next数组看前后缀相同的个数不匹配时根据next的值移动p3375点击查看代码voidgetNext(strings,intnextt[]){intj=0;nextt[0]=0;for(inti=1;i<s.size();i++){while(j>0&&s[i]!=s[j]){......