Java教程

2021“MINIEYE杯”中国大学生算法设计超级联赛 第二场 题解

本文主要是介绍2021“MINIEYE杯”中国大学生算法设计超级联赛 第二场 题解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

题目链接:
https://acm.hdu.edu.cn/contests/contest_show.php?cid=985

A

Pro:
在\(n*n*n\)的三维空间中。
选择三个整点,构成等边三角形。
求方案数。

Sol:
瞎jb数一数

B

Pro:
区间加平方数列,单点查询。
放到树上。

Sol:
树链剖分写一写。
线段树写一写。

C

给定一张无向图。
alice和bob分别在一个点。
轮流移动,到达\(x\)点获胜。
不能向对方当前在的点移动(除了终点)。
双方各移动一步判断一次胜负,可以平局。
问胜负情况。

首先最短路不相等时,非常好判断。
最短路相等时dp,记录当前两人所在的位置,每次只能向最短路\(-1\)的点转移。
O(n^2)。

D

Pro:
多次询问\((l,r,a,b)\),\(l,r\)种有多少不同的数字\(c\)满 \(c \ xor\ a<= b\)

Sol:
1.
Trie套个Trie

2.询问拆到log_n个\(Trie\)的子树上,每个子树暴力二维数点。

都是\(log^2n\)

E

签到题

F

题都看不懂

G

Pro:

Sol:

H

简单\(dp\)

I

不会

J

题意即判断排列的奇偶性。
考虑判断排列的奇偶性的公式。
代入后答案很简洁。

K

Pro:
给定数组A,B,计算数组C。
\(C_k=max(a_i*b_j) \ \ \ (i\ and \ j>=k)\)

Sol:
考虑
\(D_k=max(a_i*b_j) \ \ \ (i\ and \ j==k)\)
再求后缀\(max\),发现不好求。
但容易发现\(D_k\)数组的后缀\(max\)等价于\(J_k\)数组的后缀\(max\)
\(J_k=max(a_i*b_j) \ \ \ (k\in i \and k\in j)\)

而\(J_k\)数组很好求,直接求出\(A,B\)数组的正负高维前缀\(max \ min\),直接乘起来就可以了。

L

签到

这篇关于2021“MINIEYE杯”中国大学生算法设计超级联赛 第二场 题解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!