离散对数
开灯
https://codeforces.com/contest/1909/problem/E
解
开关全按可以打开所有完全平方数,n>=20 全部被解决。剩下的枚举。求最小值
https://www.luogu.com.cn/problem/CF1654F
解
求最小值可以排序。
seq
https://www.cnblogs.com/HLAUV/p/9871768.html
题解
诈骗,区间长度大于 P 时必为 0。发现 MP^2 以下的都可以接受,直接 PlogP 地塞入 std::set
中查前驱即可。
另一个抽屉原理
https://www.luogu.com.cn/problem/CF1895G
lxl
N×M 矩阵,(i,j) 内初始为 (i-1)M+j,Q 个询问,每次操作为“选定一个子矩形,每行翻转,或每列翻转”,每次询问为“查询 (i,j) 为什么数,(c-1)M+d 在何位置”。(Q<=5600)
题解
玩原神玩的。第一个询问是倒着模拟,第二个询问是正着模拟。O(Q^2)
神秘构造
https://www.luogu.com.cn/problem/AT_arc158_d
sort
一个长为 N 的序列,求构造用最少的栈排序,操作有:
- 序列里的最后一个元素 pop,进入栈 i;
- 栈 i pop,进入答案序列;
- 栈 i pop,进入栈 j;
操作 1、3 进行相邻相同项合并后,总数不得超过 5N。(多组数据,sum N<=3e5)
题解
诈骗题,栈至多 2 个。一个栈就维护一个单调栈即可,判一下是否有序,没排好就要 2 个栈。
2 个栈的做法:维护一个栈为单调栈,当插入一个元素时,小于它的全部进入第二个,再插入新元素,然后把第二个栈的放回去即可。
然而做题要看数据范围,不能线性找有多少个小于,要用树状数组。