文章分类 -  题解

记录好题与解法
摘要:题意简述 定义 $(a,b)$ 表示网格中从左往右数第 $a$ 个,从上往下数第 $b$ 个方格。你需要在网格 $V={(x,y)|x\in[1,H],y\in[1,W],x,y\in\mathbb{N}}$ 中等概率随机选择 $K$ 个互不相同的方格。求这 $K$ 个点的最小覆盖矩形 $R$ 覆盖 阅读全文
posted @ 2023-04-10 17:09 robinyqc 阅读(65) 评论(0) 推荐(1)
摘要:题意简述 令全集 $U={1,2,3,\dots,2m}$。 一个序列 $Q$ 是好的,当且仅当 $\forall (S\subseteq U,s.t.\ |S|=m),\prod \limits_{i\in S}{Q_i}=\sum \limits_{j\in(\complement_US)} Q 阅读全文
posted @ 2023-03-19 16:25 robinyqc 阅读(43) 评论(0) 推荐(0)
摘要:题意简述 给定一棵树,每个节点上有一个权值 $w_i$。若当前节点为 $r$,则每个点 $p$ 的贡献是 $p$ 到 $r$ 路径上权值比 $w_p$ 大的点的数量(包括 $r$),答案就是所有贡献的和。给出若干个询问 $u$,回答以 $u$ 为根节点时的答案。 形式化地,就是求: $$\sum_{ 阅读全文
posted @ 2023-03-14 08:31 robinyqc 阅读(34) 评论(0) 推荐(0)
摘要:题意简述 给定 $n$ 个集合 ${S}$ ,求是否存在一对集合 $(S_i,S_j)(i\neq j)$ 满足 $S_i\not\subseteq S_j \wedge S_j\not\subseteq S_i \wedge S_i\cap S_j \neq \varnothing$。存在则输出 阅读全文
posted @ 2023-03-06 16:49 robinyqc 阅读(39) 评论(0) 推荐(0)
摘要:题面 题目描述 定义区间 $l,r$ 的长度为 $r-l$ 。(注意,区间不能有 $l=r$) 定义两个区间 $A,B$ 的 $\rm and$ 为所有满足 $S\subseteq A$ 且 $S\subseteq B$ 的区间中的长度最长的区间(这里可以理解为两个区间的交集)。特别的,如果无任何 阅读全文
posted @ 2023-03-01 17:02 robinyqc 阅读(136) 评论(0) 推荐(1)
摘要:题意简述 接受三个参数 $N,D,K$。其中 $N$ 表示有 $N$ 个点,标号为 $0,1,\dots,(N-1)$。 第一步,将点 $0$ 标记,并且记录一个数 $A$,此时 $A=0$。 此后,你要进行如下操作: $(A+D)\bmod N \to A$。 如果点 $A$ 已经被标记,$(A+ 阅读全文
posted @ 2023-02-20 11:19 robinyqc 阅读(51) 评论(0) 推荐(0)
摘要:~~这么臭的题有必要存在吗?~~ 题意转化 题目所说的“先辈”序列,其实就是一个不下降序列。一个不下降序列,就是“先辈”。这个不再证明。 所以要求的就是:维护一个支持区间加的序列,可以判断区间是否为不下降序列。 实现方式 我们考虑简单的写法:用线段树维护。显然区间加可以用延迟标记来维护,这里不再赘述 阅读全文
posted @ 2023-01-31 15:28 robinyqc 阅读(53) 评论(0) 推荐(0)
摘要:例题:Luogu P3373 【模板】线段树 2 step 0 - 引子 在看了众多题解后,我仍然没明白这样一个问题:为什么会想到延迟标记下传要分加法和乘法,而做乘法时还要把加法的 tag 一并乘了?如何想到这种联系? 显然,在尝试一个 lazytag 不行之后,我们肯定能想到同时维护两个延迟标记。 阅读全文
posted @ 2023-01-16 18:16 robinyqc 阅读(73) 评论(0) 推荐(0)
摘要:给定质数集合 $S$ 问所有不包含 $S$ 外质因数的数中有多少 $\le n$。 $|S|\in\{1,2,3,4,5\},n\in[1,2^{64}]\cap \mathbb{Z}$ meet in the middle。我先算了一下,在 $n=2^{64}$ 的情况下,答案大约 $3\time 阅读全文
posted @ 2022-12-28 20:23 robinyqc 阅读(38) 评论(0) 推荐(1)
摘要:秦九韶算法 秦九韶算法是由中国古代数学家秦九韶提出来的多项式算法,将一个一般多项式化为若干个一次多项式计算。优点很明显:不用乘方了。具体操作如下: $$a_0+a_1x+a_2x^2+a_3x^3+\dots+a_nx^n$$ $$=a_0+x(a_1+a_2x+a_3x^2+\dots+a_nx^ 阅读全文
posted @ 2022-12-11 11:04 robinyqc 阅读(92) 评论(0) 推荐(0)
摘要:例题:POJ3974 Manacher,俗称马拉车(谐音),用于计算最长回文子串长度,时间复杂度与代码量相较其它解决此问题的算法有压倒性优势。线性时间复杂度。 我们发现偶回文串(长度为偶数的回文串)相较奇回文串更加麻烦。因此我们可以做一个预处理,把原字符串转化成易处理的:在字符串两头和每对相邻字符见 阅读全文
posted @ 2022-12-05 11:28 robinyqc 阅读(54) 评论(2) 推荐(0)
摘要:本题考察了组合数的递推以及矩阵前缀和。我们可以得出: $$C_n^m=\frac{n!}{m!\cdot(n-m)!}=\frac{(n-1)!}{(n-m-1)!\cdot m!}+\frac{(n-1)!}{(n-m)!\cdot (m-1)!}=\left{ \begin{aligned} & 阅读全文
posted @ 2022-12-04 10:17 robinyqc 阅读(42) 评论(0) 推荐(0)
摘要:~~数据范围无法阻挡我求根公式的步伐QwQ~~ 题意简述 有一个有规律的数列 $a$:$[0],[0, 1, 0, -1, 0],[0, 1, 2, 1, 0, -1, -2, -1, 0]\dots$,$q$ 次询问,每次询问求第 $k$ 项。但是注意,$k$ 是小于等于 $4\times 10^ 阅读全文
posted @ 2022-11-27 11:23 robinyqc 阅读(34) 评论(0) 推荐(0)
摘要:这道题洛谷评分这么低我是没想到的。感觉这是目前我做得最巧妙的橙题了。 先简述一下题目: 平面内有随机分布的 $N$ 个格点 $(x,y)$ ,点不可重合。每次操作可以选一个点朝 上/下/左/右 四个方向移动一格。问把这些点移动成一条连续的、平行于 $x$ 轴的线段的最小操作数。 我们一步一步来解决这 阅读全文
posted @ 2022-11-13 23:25 robinyqc 阅读(35) 评论(0) 推荐(0)
摘要:不定长子段和~ 采用前缀和加单调队列来维护。 我们通过 $S_r - S_{l-1}$ 来表示子段 $[l,r]$ 的和。其中, $S_i=S_{i-1}+P_i$(前缀和)。 求出: $$\max \limits_{i\in [1,N]}\Big{S_i-\min \limits_{j\in [i 阅读全文
posted @ 2022-11-12 17:12 robinyqc 阅读(26) 评论(0) 推荐(0)
摘要:思路可以看 yxc 的视频 link 这里采用了偷懒的离散化思想,即把 x,y 合并起来考虑。如果分离,效率更高。 code: #include<bits/stdc++.h> using namespace std; int c,n,x[505],y[505],sum[1005][1005]; ve 阅读全文
posted @ 2022-11-12 11:00 robinyqc 阅读(16) 评论(0) 推荐(0)
摘要:本题关键点是: 对于 $i = 1,2,...,N-1$,满足两条线段 $P_iP_{i+1}$ 和 $P_{i+1}P_{i+2}$ 互相垂直。 因此我们把这道题理解为只有平行于坐标轴的向量计算。可以把所有向量分为两类:纵向的和横向的。那么,横向量 $\vec r$ 之和等于 $\vec x$,纵 阅读全文
posted @ 2022-11-12 10:53 robinyqc 阅读(65) 评论(0) 推荐(0)
摘要:题目的关键点是:给定 $q$ 次操作,每次操作是以上四种操作,求每次操作后的当前列表的末尾最后一个数(若数组为空输出 -1)。 如果放在 trie 树里,不就是叶子节点吗? 默认根节点为 1,根节点的父亲节点是它自己。记录每个节点的父亲节点,以及自己存的值。当前列表的最后一位(终点)则用指针 now 阅读全文
posted @ 2022-11-12 10:53 robinyqc 阅读(32) 评论(0) 推荐(0)
摘要:合理使用 C++ STL,在比赛中有利于减少失误,加快打题速度。这道题使用 STL map 很好做。 根据题意,我们先把数列去重观察。设数列构成大小为 $M$ 的集合 $S={S_1,S_2...,S_M}$。 刚好有 $K$ 个数比目标值大,其实就是说目标值在集合中是第 $K+1$ 大的。 那么题 阅读全文
posted @ 2022-11-12 10:52 robinyqc 阅读(216) 评论(0) 推荐(0)
摘要:~~话说没人写 vector 高精的吗?~~ 这道题的思路在《算法竞赛进阶指南》中已经指出。具体如下: 这个方法很好,但实际上这道题还需要更深一步的解决:高精度。需要用到如下函数:乘、除、比较大小。使用面向对象编程以减少码量。具体代码如下; #include<iostream> #include<c 阅读全文
posted @ 2022-11-12 10:52 robinyqc 阅读(36) 评论(0) 推荐(0)