复建自闭记录

\(\texttt{lower_bound} x\) 找到第一个 \(\ge x\) 的数
\(\texttt{upper_bound} x\) 找到第一个 \(>x\) 的数

CF1843F

一棵树,点权为 \(1\)\(-1\),询问给定一条路径询问是否有一条字串和为某值。
题解:点权为 \(\pm1\) 怎么用?它在整数域上连续!所以最小值和最大值之间都能取到!!!

CF1844B

排列子串 \(\texttt{Mex}\) 为质数个数最大化。
题解:想到了质数两端,非质数居中。没想到质数 \(2\)\(3\) 两端,\(1\) 居中,这样跨越 \(1\) 的基本上都是质数了。

CF1844C

每次操作删一个数再把相邻两个合并(求和),最大化剩下的数。
题解:没观察出奇偶性的性质。实际上每次操作中的合并只会合并同奇偶的数。所以最后一个属肯定是若干个同奇偶的数的和。所以另一种奇偶性的数肯定会被删光,我们不用管。那这样的话我们就能删掉任意的这种奇偶性中我们讨厌的数,因为两边的数是最后会被删光的数。那我们当然把所有负数闪光喽。当然,全都是负数也不能删光的说。

CF1844C

构造字符串使得 \(\forall (x-y)|n,s_x=s_y\),最小化字符集大小。
题解:字符集最大 \(26\) 所以答案肯定不会太大。然后就开始猜答案是 \(0,1,2\ldots\),思路就错了
猜测答案是最小的 \(k\) 使得 \(\forall x<k,x|n\)\(k\) 肯定是最小的,因为 \(s_1,s_2,\ldots,s_{k}\)两两不同,\(k\) 个一循环直接构造即可。
\(\because 26!\gg 10^6 \therefore \exist k\)

CSES1076

滑动窗口,维护窗口中位数。
题解:对顶堆,维护两个堆,分别表示中位数左、右的所有数,支持加入数。
怎么删除呢?把堆换成 set 即可。

projecteuler P78

\(n\) 拆成若干个没有顺序的数之和的方案数。
题解:这就是完全背包计数嘛。。。可以空间 \(O(n)\) 时间 \(O(n^2)\) 搞定嘛

CF1844E

构造一个 \(n\times m\) 的网格,每个格子中填 \(1,2,3\),要求满足:

  • 任意 \(2\times 2\) 网格中都有三重数字
  • 相邻格子数字不同
  • 满足若干个限制,即某个 \(2\times2\) 网格中对角线相同

题解:首先有一个性质,每一个 \(2\times2\) 的格子里确定三个剩下一个也确定了
然后@Flying2018发现了一个神仙性质,按他那样连边就可以了。

posted @ 2023-07-05 22:31  Peal_Frog  阅读(29)  评论(0编辑  收藏  举报