Educational Codeforces Round 87

## A. Alarm Clock

~~阅读理解题~~

题意:有一个闹钟,第 $b$ 分钟第一次响 ,每次响完要花 $d$ 的时间关掉,两次之间隔 $c$ 分钟(指开始时间),求睡够 $a$ 分钟且闹钟在响的最小时刻,没有输出 -1。$T \leq 1000$,$0 \leq a,b,c,d \leq 10^9$。  

题解:第一次响之前够 $a$ 分钟显然答案是 $b$ ,否则的话每次闹钟之间能睡 $max(c-d,0)$ 分钟,算一下闹钟要响多少次就行了。  

$O(T)$

4min

 

## B. Ternary String

题意:有一个只有 $1,2,3$ 的字符串,求最短子串同时包含 $1,2,3$。 $T \leq 10^4$,总串长 $\leq 3\times 10^5$。

题解:假设从 $l$ 开始最短满足条件的子串是 $[l,r]$ ,$r$ 显然单调不降,双指针一下就好了。

$O(\sum length)$

 

8min

 

## C1. Simple Polygon Embedding

C题放几何题,差评

题意:给一个正 $2n$ 边形,边长为 $1$,求可以覆盖它的正方形的最小边长,$T,n \leq 200$,保证 $n$是正偶数。

 

题解:可以发现(?),最优情况一定是正方形与多边形有 $4$ 个边重合,答案就是正多边形的边心距 $\times 2$,直接拿三角函数算就行了。

$O(\text{三角函数} \times T)$ (不知道三角函数具体是咋实现的)

16min

 

## C2. Not So Simple Polygon Embedding

C题放这么变态的几何题,差评

题意:给一个正 $2n$ 边形,边长为 $1$,求可以覆盖它的正方形的最小边长,$T,n \leq 200 , n>1$,保证 $n$是奇数。

题解:经过画图和猜结论可以发现(答案应该和半径跟边心距有一些关系,然后答案肯定比较对称,有对称性的线可以想到角平分线(??)),最优情况一定是多边形的边心距和半径的角平分线长度 $\times 2$,直接拿三角函数算就行了(

$O(\text{三角函数} \times T)$ (还是不知道三角函数具体是咋实现的)

23min

 

## D. Multiset

题意:维护一个可重集,$q$次插入 $\leq n$ 的正整数和删除第 $k$ 大,所有操作结束后随便输出里面的一个元素,没有输出 0。空间限制 $28 MB$,$n,q \leq 1e6$。

题解:

第一眼 $multiset$ ,但是空间过不了(

由于值域比较小,用树状数组维护每个数的出现次数,然后二分查询第 $k$ 大,$O(qlog^2n)$ 理论上过不了。~~但是实际上能过~~

考虑把二分换成倍增,由于树状数组里面本来就有 $(now-lowbit(now),now]$ 的和,所以倍增的时候查询是 $O(1)$ 的。

查询时候随便挑一个输出就行。

$O(qlogn)$

11min

 

posted @ 2020-05-18 12:54  daduda  阅读(134)  评论(0)    收藏  举报