竞赛讨论区 > 【题解】牛客网NOIP赛前集训营-普及组(第三场)
头像
Key酱不是喵
编辑于 2019-04-22 15:31
+ 关注

【题解】牛客网NOIP赛前集训营-普及组(第三场)

A十七边形
答案一定是r * r * ???的形式根据样例可以算出来答案是r * r * 3.07055416259080当然也可以用三角函数算。大概就是相似图形,或者是物理中的量纲分析。可以推断出面积和半径平方成正比。类比圆和正方形。


B首都
首先考虑一维的情况非常简单,答案就是中位数,然后如果n是偶数,那么中间的2个数字之间的数字都可以。对于二维的情况,如果是曼哈顿距离|x1 x2| + |y1 - y2|那么可以两个方向分别考虑。而这个是切比雪夫距离max(|x1 - x2|, |y1 - y2|)可以通过(x , y) -> (x + y, x - y)的方式,转化为曼哈顿距离。 然后这样会有一点小问题,就是如果两个方向上的中位数,奇偶性不同那么转换回去会出现0.5的情况比如数据40 00 11 01 1最优解是 0.5 0.5 不是整数。 这个时候就检查一下最优解最近的整点(横坐标 +- 0.5, 纵坐标 +- 0.5)然后另一个情况,就是有多解的情况相当于要求x+y在[L1, R1]区间内,x-y在 [L2, R2]区间内显然x+y和x-y奇偶性需要相同变成了数区间内,奇数的个数和偶数的个数。


C分则能成
注意到得分只和开始局面,结束局面有关刚开始n,最后如果是a[0], a[2], .., a[k]共k+1块的话收益一定是n*(n-1)/2 - a[0]*(a[0]-1)/2 - a[1]*(a[1]-1)/2 .. - a[k]*(a[k]-1)/2然后如果最后有k+1个数字那么最大的数字,和最小的数字,差至多是1。直接计算答案即可。


D戴德兰
首先完成任务一定是完成耗时短的。所以一定是完成耗时最短的一些任务。 按照修改后的题意,直接认为一共有c+d的时间即可。然后把所有任务排序,贪心即可。按照修改前的任务,那么选出的任务要满足如下条件:如果总和s > c+d,一定不可以如果总和s <= c 一定可以。设need = (s - c) * 2选出的 任务中,必须存在一个子集,这个子集的和在[need, 2 * d]之间。这个问题是一个01背包,结合bitset做一下就可以了。


std


全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐