个人训练记录(UPD 9.16)
本文章记录一些较难的题,摘自自己的blog中的其他文章。也有些单独成章有点浪费的题也写在里面了。 2019.7.15-2019.7.21 1182F(2900) 题意:求在区间 $[a,b]$ 中找一个最小的 x 使得 $\text{abs}(\text{sin}(\frac{p}{q} \pi x))$ 最大。 $0 \le a \le b \le 10^{9}, 1 \le p,q \le 10^9$ key:姿势 实际上是求一个最小的 x 使得 $f(x)=2px \bmod 2q$ 最靠近 q。 性质:$f(x)+f(y)\equiv f(x+y) \bmod 2q$ 。所以对于区间内每个数 x ,都可以把它拆分为 $x=a+i*t+j$ 。其中 $t=\sqrt{b-a+1}, j=(x-a) \bmod t, i \in [0,t]$ 所以只需要把所有 $f(a+j)$ 记下来排个序,之后枚举 i 二分查找即可。剩余的区间( $i=t$ 时 j 可能取不到所有$[0,t)$ )需要暴力。 有两个坑点:1. 有序表中同样 f 的取小的。 2. 因为模运算的序列是环形的,所以如果二分查找的结果是首/尾,需要特判。 1194E(2200) 题意:有 n 个线段,每个都是平行 x 或者 y 轴,只有互相垂直的两线段才会相交。问形成了多少个矩形。 $n \le 5000,