Greedy Gift Takers
https://www.luogu.com.cn/problem/P4090
若 \(i\) 不能到队首,则 \(i + 1\) 显然也不能。二分当前 \(x\) 是否能到达队首。
本来要考虑被扔的必须能到队首的限制,但是实际上可以忽略,直接从小到大直接开扔。因为如果当前被扔的 \(y\) 永远不能到达队首,那么 \(x\) 之后到达 \(y\) 的位置以后,也还是无法到达队首。
使用桶排可以 \(O(n \log n)\)。
心灵治愈
能写出这种题面的赶紧去康宁心灵治愈一下?
\[\sum_{1 \le a_i \le m}[\gcd(\gcd a_i, m) = 1] = \sum_{d\mid m}\mu(d)(m / d)^n
\]
找到 \(m\) 的 \(k\) 个不同质因数,直接做应该可以是 \(O(2^k)\) 的,dp 一下就是 \(O(k^2)\) 的。
做菜
比较牛,先转化成单次 \(O(n \log n)\) 的 priority_queue 做法,然后有一个 \(O(N^3V^4)\) 的 DP。
数据交互
https://www.luogu.com.cn/problem/P6666
比较经典的拆贡献,看哪边 LCA 在另一边的路径上。
DDP 好题。但是为什么没看出来 DDP。
发现转移矩阵只有 \(4\) 个地方有值,并且需要对矩阵两个位置的区间加,乘了之后还是对这两个位置加。就可以直接打 tag 维护。
使用轻重链剖分+线段树,\(O(n \log^2 n)\)。