离散对数

开灯

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 的序列,求构造用最少的栈排序,操作有:

  1. 序列里的最后一个元素 pop,进入栈 i;
  2. 栈 i pop,进入答案序列;
  3. 栈 i pop,进入栈 j;
    操作 1、3 进行相邻相同项合并后,总数不得超过 5N。(多组数据,sum N<=3e5)
题解 诈骗题,栈至多 2 个。

一个栈就维护一个单调栈即可,判一下是否有序,没排好就要 2 个栈。

2 个栈的做法:维护一个栈为单调栈,当插入一个元素时,小于它的全部进入第二个,再插入新元素,然后把第二个栈的放回去即可。

然而做题要看数据范围,不能线性找有多少个小于,要用树状数组。

posted on 2024-10-25 10:18  Zaunese  阅读(72)  评论(0编辑  收藏  举报