NWU_ACM校赛题解+总结

第一次参与ACM校赛的举办,紧张、激动又劳累。我本人主要负责PC2的搭建,具体搭配细节,请见另一篇博文:
虽然没有参加热身赛,但是在正式赛中还是作为普通选手参赛见识到了各个大佬的威力。本次比赛共5个小时,有16道题,包括三道C语言基础题和13道难度与区域赛相近的题。

A.模拟(C语言题)
题意:给流程图,模拟流程
题解:按照流程图的格式规范写循环或分支语句即可。
PS:题干描述不是很准确,导致了整场比赛唯一的一个wa,伐开心~

B.凸包
题意:给定n个vi和wi,找出存在v i ∗ cos(x) − w i ∗ sin(x) > v ∗ cos(x) − w ∗ sin(x)v i ∗ sin(x) + w i ∗ cos(x)>v ∗ sin(x) + w ∗ cos(x)的所有vi和wi。
题解:

/* 出题大佬的题解,先码着,日后再看 */
题目中所说的美味度和好看度,很容易想到在一个平面上用一个坐标表示一个点,所以可以先将每一个食物都看成一个点。其次,观察旋转的公式发现,旋转餐桌的操作就相当于是将一个点绕原点旋转。我们再来看一下题目中对点的要求:
1、存在某个时刻,其某个方向存在最值;
2、在此时刻,没有其它点和它在此方向上坐标相同。
在这两个条件的限制下,我们会发现,当一个点处在一个凸多边形内部时,它第一个条件永远无法达到,而它在凸多边形某一边上且非顶点时,第二个条件也永远无法达到。所以我们要求的点就是在凸多边形的顶点上,于是对这 n n 个点求一个凸包就好了。时间复杂度 (nlogn) O ( n l o g n )

PS:比赛将近结束才开始想这道题,想了一堆乱七八糟的,从三角函数到求导、求极值,平面几何的知识基本为0,还是必须得抓紧时间学了。

C.最短路径变形
题意:给定一个无向图,每条边只在给定的时间连通,同时不允许在某一点停留,求最短路径。
题解:出题人的题解是使用堆来做,没看懂。。。
赛后听旁边大佬讲了另一种做法,基础算法是用SPFA求最短路,在每一条路分两种情况,若时间符合就直接通过,若时间不符就加上等待时间再判断。

D.博弈论
题意:n枚棋子围成圈放。两人轮流取1~3枚相邻的棋子,先取完为胜,求赢家。
题解:当n<=3时,先手可直接取完;否则无论怎么取,只要后手取对面的一个或两个都会给先手留下两条链,后手必胜。
PS:这道题是队友回忆起暑期训练的一道类似的题的做法,必须在此膜一发,我都把之前做过的题忘的一干二净了。

E.后缀数组
好像是道挺裸的题,然而后缀数组不会,直接凉凉~

F. dfs / bfs变形
题意:给一棵树,所有小于val的边可算为0,若使遍历后的和小于给定的m,求val的最小值
题解:二分答案,对于每一个答案用dfs或bfs遍历判断是否小于m即可。

G.双最长上升子序列
题意:给定一个序列,求两个连续上升子序列的长度和的最大值,要求第二条的起点在第一条终点的右边
题解:正着求一遍最长上升子序列,再倒着求一遍最长下降子序列,然后枚举界限即可
PS:使用动态规划的思想求LIS时,只有最后的结果是正确的,故可以在打表的过程中直接开一个数组将LIS保存下来

H.水题
签到题就不说了

I.阶梯博弈
不会不会,这种算法都是头回听说

J.二维区间最大值
题意:给定二维表,查询任意区间的最大值
题解:先用二维ST表求区间最大值,再用多个一维ST表来存储最大值的下标
PS:题解说的倒容易,问题是二维ST表不会啊,补算法~

K.K-Fibonacci 数列
题意:
NWU_ACM校赛题解+总结_第1张图片
题解:先用矩阵快速幂来处理,对于K^2+4是模P的二次剩余的情况,可以直接做来优化
PS:比赛截止前,用矩阵快速幂交了几发,果然不优化还是过不了的啊,hhh

L.多重背包(假)
题意:给你一个常数 C 和 n 个物品,第 i 个物品的权值为 C g i 。从中可重复地选取 K 个,贡献为这 K 个物品权值的乘积,求所有选取方案的贡献的和模 65537 。
题解:高级数论,不会不会,啥循环卷积,什么快速数论变换,可望而不可及
PS:乍一看被标题忽悠了,根本就没有背包啥事

M.水题
实质就是找中位数

N. dp
题意:两人轮流放棋子,只能放在上、下、右上、右下的位置,同时不能出现一对 x 轴方向相邻的子,即不能同时存在两个子坐标满足 (x, y) 和 (x + 1, y) 。 先无处放者为败,求先手赢的步数
题解:dp(有四种转移方式)或者记忆化搜索
PS:还以为就是一个单纯的DFS,反正也不会做

P.模拟
题意:向杯塔倒酒,每秒倒1升,对于n层求不倒洒的最长时间
题解:用2^20表示一个单位,接着模拟即可
PS:比赛时想到会被卡精度,三层循环写的也不是很利索,就用DFS写的,还沾沾自喜来着,结果。。。额

总结:以后还得继续努力啊,话不多说了,码代码去,(逃

你可能感兴趣的:(比赛总结)