郑州外国语信息学公益体验活动题目解析

A.及格

题目大意:小A的期末成绩分为平时作业,期中考试,期末考试三部分。并且平时作业和期中考试成绩已知,又知道三部分在总分中的权重,问期末考试最少要多少分才能及格?所有分数都是整数。

解析:最简单的方法是直接枚举期末考试的得分,不过想直接列式子算出来也可以。难度为入门题。

B.最大公约数

题目大意:给一个长为n的序列a,再给一个整数k,问序列中距离大于等于k的数对中最大公约数最大是多少。

n,k<=3e5,1<=ai<=1e6

解析:对于一个整数d,如果d有两个不同的约数之间距离超过了k,那么答案一定大于等于d。这就是这对数的最大公约数一定大于等于d。

因此可以先预处理出每个数字在序列a中最左出现是在哪个位置,最右出现是哪个位置,再从大到小枚举d,再枚举d的倍数。计算出在d的倍数中最靠左的和最靠右的分别在哪里。由此来判断是否存在一对d的倍数之间距离超过k。

复杂度是倍数枚举的复杂度 O(nln(n))

C.乘法排序

题目大意:给你一个长度为n的序列a,a内都是正整数,你可以执行若干次操作,每次操作可以取序列中的一段,给这一段同时乘以一个整数x。请你计算出最少的操作次数可以使得a变成严格递增的序列。

解析:如果x也要求是正整数,那么考虑应该怎么做。如果存在a[i]<=a[i-1],那么此处必定要消耗一次操作来解决这个非递增的位置。然而在具体操作的时候,为了不给后面的局面带来坏的影响,应当给[i,n]所有的数都乘上x。因此,如果x要求是正整数的话,答案就是a[i]<=a[i-1]的位置个数。

其次,考虑x可以是负数。负数的话可以使得一段从严格递减变为严格递增。因此,考虑对于序列的前一半构造为严格递减,后一半构造为严格递增,再给前一半统一乘上-1,有可能得到更优的答案。

郑州外国语信息学公益体验活动题目解析

因此,问题转化为,找到一个最优的分界点,使得前一部分的非递减位置+后一部分的非递增位置最少。这个可以通过前缀和+后缀和预处理得到。

D.树的搭建

题目大意:给定一棵n个点有点权的树,请你将n-1个权值赋给边,使得任意两点之间两点点权乘积和两点路径上最小边权的乘积之和最小,请你计算出最小的和。

n<=23

解析:考虑贪心的思想,越小的边权越应该让两端的点越多。这样才能有更多的点经过该边,才能使得权值更小。因此考虑从大到小将权值赋给这些边。

n<=23的话,自然会考虑状压。考虑状压S表示当前已经赋权值的边的集合,S`表示尚未赋权值的边的集合。S会将点链接为几个连通块,那么S`中任选一条边,将会连通其中两个连通块,并且合并的时候新产生的路径(由A连通块走向B连通块)一定会经过新选的这条边,并且由于我们赋值是从大到小,那么这些路径上的最小边权就会是我们即将赋予的边权。

在做状压dp的时候,首先把S构成的连通块用并查集或者DFS处理出来,记录出每个连通块的点权和sum。然后枚举S`中的边i,若边链接x和y两个连通块,那么新产生的代价就会是sum[x]*sum[y]*w[i]。dp转移就是

dp[S|i]=min(dp[S|i],dp[S]+sum[x]*sum[y]*w[i])。

复杂度O(n*2^(n-1))

本次活动题目套题难度大约在普及+/提高-。考察了模拟,贪心,数论,动态规划等热门知识点。后续会继续开设入门、提高到省选、noi级别的体验活动,具体时间在公众号通知,欢迎在信息学竞赛上有更高追求的选手参与。

(0)
上一篇 2024年1月3日 上午9:51
下一篇 2024年1月17日 下午4:13

猜你喜欢

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注