A. A++++++++++++++++++

输出min(national数量,international数量)

B. GDP Carry

考虑所有情况(序列数量的奇偶、连续子段的元素和是奇数或偶数),易得只要数列里含有奇数,那么先手必胜,否则后手必胜。

C. Interpretability

原题可以视为有若干条长度必为的边,问最多能组成多少个三角形。

由于,所以如果要组成边长分别为的三角形,那么必须为,且至少有两条边长为的边,也就是说组成的三角形要么是边长为的等边三角形,要么是边长为的等腰三角形(否则会浪费边)。

在此基础上分析怎样组成三角形会让答案更优,易得对于每个而言,优先组成等边三角形更优,剩下的边组成等腰三角形。

D. Batch Normalization 1D

模拟即可,本质上其实就是循环数组操作,广播操作也可以不实现,把所有数值都变成的张量计算。

E. Antinomy与黑风海

题意可以看成一个有向图中从1号点出发到其他所有点,每次到达一个点需要先回到1号点才能去下一个点。那么显然答案是1号点到每个点的最短路+每个点到1号点的最短路,但是由于点的数量巨大,我们不可能对每个点都跑一遍最短路。

首先1号点到每个点的最短路可以求一次最短路即可。

那么如何快速求其他点的最短路呢?如果要求其他点到1号点的最短路,单源最短路的话需要求n-1次,有没有办法减少跑单源最短路的次数?(Floyd显然是不行的,可能可以跑到世界终结)

我们考虑如果有一条从i点到1号点的的最短路径:->p1->p2->…->1,如果我们把所有边都反向一下,这条路径就变成了1->…->p2->p1->,但最短路长度不变,也就求出了i点到1号点的最短路。那么把所有边都反过来,再求一边1号点到其他点的单源最短路,就得到了每个点到1号点的最短路。

赛后检测发现数据范围描述有误(Orz抱歉,也就是INF要比1e16要大一点),且原数据卡了SPFA 😅😅😅😅😅😅

F. Antinomy与紫水宫

题目可以看成给一棵树上的结点染色,每两对最短距离小于3的结点不能是同一个颜色。

图片说明

对于这一颗树,假设最多能有k种颜色,那么给1号点染色的方案是k。
2、3、4颜色需要和1不同,那么方案数是
对于5号点的颜色要和1与4不同(5号点到2和3的距离是3),那么方案数是
以此类推。

所以对于这棵树而言,如果号结点有个子结点,那么除了1号结点有种方案外,其他点都有种,再根据乘法原理计算即可。

G. Antinomy与伊修加德

如果想要利润高一点,那么需要尽量让每个盘子装的拉拉肥售价尽可能高,且盘子的价格尽可能低,然后显然,利润是有上限的,肯定是先贪心的选取价值最高的拉拉肥来卖。所有馒头售价的总和是上确界,0是下界。

那么接下来就可以考虑转化成背包问题用动态规划求解,先把拉拉肥按售价从大到小排序

然后表示前个盘子装前个拉拉肥的最大利润,

对于计算拉拉肥售价总和可以用前缀和加速,当然这里的二维dp也可以写成一维的。

H. Antinomy与太阳神草原

首先可以看怎么快速求出两个字符串的不和谐度,首先计算出现过的字符集合的并集大小为,我们可以把和b对于每个字符相等的位置,连一条的边,然后跑一遍并查集,设有个并查集(或者联通块),显然不和谐度就是

所以接下来就是枚举每一个出现过的字符集合的每一个字符来计算这个不和谐度。
这里可以使用FFT来加速这个类卷积过程。