上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页
摘要: 题目给定 $n$($n \le 10^5$)个带颜色(颜色 $\in \{0,1,2\}$)的点,求包含三种颜色点的最小周长矩形。题解采用偏序问题做法,点关系有两种偏序:一是 $x_0 < x_1 < x_2 \land y_1 < y_2 < y_0$;二是 $x_0 \le x_1 \le x_2 \land y_0 \le y_1 \le y_2$。第二种拆成两个二维偏序,扫描 $x$ 维求解,复杂度 $O(n \log n)$。第一种把两种颜色作数据、第三种作询问,扫描 $x$ 维,遇到数据修改线段树,遇到询问单点查询,线段树维护 $0$ 的最小 $-x + y$、$1$ 的最小 $-y$ 及两者最小和,保证标记时间戳顺序,复杂度也是 $O(n \log n)$。代码多次调用求解函数并处理不同变换情况。 阅读全文
posted @ 2025-02-20 20:33 wing_heart 阅读(48) 评论(0) 推荐(0)
摘要: 买 $a$ 白 $b$ 黑球,抽中白球概率 $\frac{a}{a+b}$,期望抽 $\frac{a+b}{a}$ 次(经求导证明,本题所需为 $\frac{b}{a}$)。买 $A$ 个白球,贪心策略是用其他球凑 $A$ 模单价最低球个数 $b$ 的同余类,其余买此球。$O(400^3)$ 的 DP 求 $400 \times 400$ 内买球最少价钱并处理后缀最小值。$>400 \times 400$ 时,根据同余和导数条件 $y = \sqrt{\frac{B}{a \cdot b}}$ 确定最优,从不同位置算,复杂度 $O(n w^2 + qw)$,也可用花费对应买球数求解。 阅读全文
posted @ 2025-02-19 22:15 wing_heart 阅读(0) 评论(0) 推荐(0)
摘要: 给定长度 $n\leq10^5$ 的序列 $\{a_i\}$($a_i\leq10^6$),初始 $v = 1$,可至多 10^5 次乘除 $\text{lcm}\{b\}$($\sum |b| \leq 10^6$)使 $v$ 变为 $\gcd\{a_i \times a_j\}$。思路:考虑质因数指数(10^6 内最多 7 种),操作对应指数加减。用 min - max 容斥将 $\gcd\{a_i \times a_j\}$ 转化为 $\gcd$、$\text{lcm}$ 乘除,把最小和次小指数表示为 $(\gcd\{a_i\})^2 \prod_i \frac{\gcd_{i \neq j \{a_j\}}}{\gcd\{a_j\}}$,操作数约 $2^8 + 8 \times 2^8$,复杂度 $O(n\log n + n \omega(\sqrt{a}) + \sqrt{a})$。 阅读全文
posted @ 2025-02-18 22:01 wing_heart 阅读(22) 评论(0) 推荐(0)
摘要: 题目要求根据给定的 $n$ 个点($n\leq2000$)和表示编号在 $[i,j]$($i \le j$)的点是否连通的 $a_{i,j}$($a_{i,j}=\{0,1\}$)构造出一棵合法的树,且保证有解。思路上先考虑小区间再合并到大区间,对于只有 $a_{1,n}=1$ 的情况给出了一种构造方案($n = 3$ 时无解);一般情况则按顺序加点,利用树的连通块性质,当 $a_{i,n}=1$ 时,通过连边($i,n$)等方式合并连通块,采用小到大枚举 $n$、从大到小枚举 $i$ 的方法,可证明其正确性,时间复杂度为 $O(n^2)$。代码实现了上述构造树的过程。 阅读全文
posted @ 2025-02-17 16:16 wing_heart 阅读(38) 评论(0) 推荐(0)
摘要: 题目中坐标轴 $1$ 到 $n$($n\leq10^5$)有初始高度为 $0$ 的 $n$ 个房子,人在 $(0,0)$ 处,有 $m$ 次($m\leq10^5$)修改房子高度操作,每次修改后求可见楼房数(连线不被遮挡)。思路:维护各点与 $(0,0)$ 连线斜率,可见楼房斜率严格递增且优先左边。直接暴力修改 $O(1)$、查询 $O(n)$;采用线段树,维护节点满足要求的斜率序列长度,左儿子可直接合并,右儿子按需递归合并。单点修改,被影响结点 $O(\log n)$ 个,每次合并 $O(\log n)$,修改复杂度 $O(\log^2 n)$,全局查询 $O(1)$。代码实现上述逻辑。 阅读全文
posted @ 2025-02-16 20:07 wing_heart 阅读(12) 评论(0) 推荐(0)
摘要: 有 $n$ 个长 $a_i$($n,a_i\leq10^5$)的随机字符串,$f(s)$ 是 $s$ 最小循环移位起始位置(多解取最小),求两循环序列 $\{f(s_i)\}$ 期望相同位置数。思路:算相邻 $f$ 相同概率求和,定义 $h_a$ 求 $g(f(a)=x)$,归并因数更新求解,预处理因数与 $h$,复杂度 $O((n + q)因数个数 + n\sqrt{n})$,代码实现计算。 阅读全文
posted @ 2025-02-16 19:37 wing_heart 阅读(116) 评论(0) 推荐(0)
摘要: 待订正。 阅读全文
posted @ 2025-02-15 15:17 wing_heart 阅读(50) 评论(0) 推荐(0)
摘要: 题目给定长度为 $n$ 的序列,有 $q$ 次询问,每次询问区间 $[l,r]$ 的最短子区间 $[l',r']$,使 $[l,r]$ 中出现的数都在 $[l',r']$ 中出现,需输出 $[l',r']$ 的长度,$1\leq n,q\leq 2\times 10^6$,$1\leq a_i\leq n$。解题思路上,先有 $O(n^2)$ 的双指针暴力法。题解采用扫描右端点 $p$ 的方法,用数据结构维护右端点为 $p$ 时每个下标 $k$ 代表后缀的最小合法前缀 $f_k$,找出 $a_p$ 上一次出现位置 $la_p$,将询问的 $l$ 落在 $(la_p,p]$ 区间的 $f$ 对 $p$ 取 $\max$,使用并查集让 $la_p$ 指向 $la_p +1$ 以找到最大合法数据左端点 $d$。还可将问题类比二维偏序问题,转化为维护每个后缀点对权值来求解,因数据点权值维护需按顺序,所以按第二维一定顺序扫描。代码中用 zkw 线段树处理,添加了快读以优化。 阅读全文
posted @ 2025-02-14 20:33 wing_heart 阅读(28) 评论(0) 推荐(1)
摘要: 题目给定一棵 $n$ 个点($n\leq 8000$)的无根树,每个点有取值范围 $[l_i,r_i]$,要求选择某些点染成特殊点,计算满足所有点离距离它最近的特殊点的距离 $\in [l_i,r_i]$ 的染色方案数,空间限制 $128M$。解题采用 $O(n^2)$ 的树形 DP,设状态 $f_{i,j,0/1}$ 表示点 $i$ 距离最近的特殊点距离是 $j$ 且该点在子树内/外,转移时逐个加入儿子考虑,因相邻点距离最近特殊点距离相差不超 $1$,每个状态有 $O(1)$ 种转移。为满足空间要求,借鉴 dsu on tree 思想,先搜重儿子再搜轻儿子,轻儿子最多跳 $\log$ 次,使空间复杂度降为 $O(n \log n)$。 阅读全文
posted @ 2025-02-14 19:06 wing_heart 阅读(2) 评论(0) 推荐(0)
摘要: 题目给定长度为 $n$ 的含 `L`、`R`、`?` 的操作序列及长度为 $m$ 的一维坐标轴($1$ 左为墙,$m$ 右为悬崖),要求计算每个起点 $k\in[1,m]$ 出发,重复执行操作序列无数次后仍存活的合法操作序列数量($n,m\leq500$)。解题时先将操作序列抵消成 `L` 拼 `R` 形式,设 $f(x)$ 为从 $x$ 出发经一次操作序列到达的位置,分 $f(x)\leq x$ 和 $f(x)>x$ 两种情况,分别用 $dp_{i,j}$ 和 $do_{i,j,0/1}$ 进行动态规划计算,时间复杂度为 $O(n^3)$。 阅读全文
posted @ 2025-02-13 21:27 wing_heart 阅读(0) 评论(0) 推荐(0)
摘要: 云剪贴板。 阅读全文
posted @ 2025-02-09 16:28 wing_heart 阅读(142) 评论(0) 推荐(0)
摘要: 在给定的$n$个点、$m$条边(含重边和自环,边权$w$)的连通无向图上,有$q$次询问,每次给定$s,t,d,k$,表示从点$s$到$t$,初始工资$d$,每经一边工资异或边权,可选择$k$个时刻使工资翻倍,求最大最终工资($n,m\leq 10^5$,$q \leq 10$,$d,w \leq 2^{16} - 1$,$k \leq 40$)。思路是先考虑$k = 0$时,用DFS树和基本环构建线性基求解;$k>0$时,将问题转化为找$k$个点进行翻倍操作,利用FWT计算相关线性空间,通过从高位贪心、保留FWT形式优化转移,过程中对大于2的大质数取模,时间复杂度$O(qV (k + \log V))$ 。 阅读全文
posted @ 2025-02-08 21:54 wing_heart 阅读(2) 评论(0) 推荐(0)
摘要: 降维、二次偏序、总结。 阅读全文
posted @ 2025-02-06 21:59 wing_heart 阅读(113) 评论(1) 推荐(2)
摘要: [P11364 [NOIP2024] 树上查询] 给出 $n$ 个结点树,定义 $\text{LCA}^*(l,r)$ 为 $[l,r]$ 结点最近公共祖先,有 $q$ 次询问,每次给定 $l,r$,求满足 $[l',r'] \subseteq [l,r]$ 且长度 $\geq k$ 的最大 $\text{dep}_{\text{LCA}^*(l',r')}$($n,q \leq 5\times10^5$)。思路:先得 $O(qn^2)$ 暴力解,将 $d_i = \text{dep}_{\text{lca}_{i,i+1}}$ 建笛卡尔树,预处理 $d_i$ 左右极大区间 $[x_i,y_i]$,根据 $[l,r]$ 与 $[x_i,y_i]$ 交长条件化简合法状态,分情况扫描询问,用数据结构维护查询,复杂度 $O(n \log n)$。 阅读全文
posted @ 2025-02-06 21:06 wing_heart 阅读(105) 评论(0) 推荐(0)
摘要: 给定含 $n$ 个顶点的有根树及 $m$ 个二元组 $(x_i,y_i)$ ,定义 $D(a,b)$ 为在以 $a$ 为根子树中但不在以 $b$ 为根子树中的顶点个数,需计算以这些二元组为顶点的完全图的最小生成树,边权为 $D(x_i,x_j)+D(x_j,x_i)+D(y_i,y_j)+D(y_j,y_i)$ ,约束为 $1\le n\le 10^6,1\le m\le 10^5$ 。思路方面,先将距离公式 $d_{x,y}$ 按不同祖先关系分类,求解最小生成树考虑Boruvka算法。原树套树方法复杂度 $5\log$ 过高,经分类讨论,按不同祖先关系(如两维都是祖先、两维都是后代、一维祖先一维后代等)优化,每种情况复杂度为 $O(\log)$ 或无 $\log$ ,最终总时间复杂度达 $O(n \log^2)$ 。 阅读全文
posted @ 2025-02-05 11:08 wing_heart 阅读(33) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页