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
浙公网安备 33010602011771号