第一次参与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、在此时刻,没有其它点和它在此方向上坐标相同。
在这两个条件的限制下,我们会发现,当一个点处在一个凸多边形内部时,它第一个条件永远无法达到,而它在凸多边形某一边上且非顶点时,第二个条件也永远无法达到。所以我们要求的点就是在凸多边形的顶点上,于是对这